From: Andrey Hristov Date: Fri, 25 Sep 2009 12:25:54 +0000 (+0000) Subject: Fix mysqli_stmt_attr_set in libmysql mode. X-Git-Tag: php-5.4.0alpha1~191^2~2579 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=089e8b56a1d3b1a33ef01d1e58a73bcf81e97fa0;p=php Fix mysqli_stmt_attr_set in libmysql mode. mysql_stmt_attr_set returns my_bool instead of int. If it was int, then 0 is success and !0 is failure, but for my_bool 0 (FALSE) is failure and !0 is success. --- diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 613e9f8c28..19ab150b2c 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -2190,7 +2190,7 @@ PHP_FUNCTION(mysqli_stmt_attr_set) mode = mode_in; #if !defined(MYSQLI_USE_MYSQLND) - if (mysql_stmt_attr_set(stmt->stmt, attr, (void *)&mode)) { + if (FALSE == mysql_stmt_attr_set(stmt->stmt, attr, (void *)&mode)) { #else if (FAIL == mysql_stmt_attr_set(stmt->stmt, attr, (void *)&mode)) { #endif diff --git a/ext/mysqli/tests/mysqli_stmt_attr_set.phpt b/ext/mysqli/tests/mysqli_stmt_attr_set.phpt index 1964fe82d0..312f9f0f38 100644 --- a/ext/mysqli/tests/mysqli_stmt_attr_set.phpt +++ b/ext/mysqli/tests/mysqli_stmt_attr_set.phpt @@ -58,7 +58,7 @@ require_once('skipifconnectfailure.inc'); do { $invalid_attr = mt_rand(-1 * PHP_INT_MAX + 1, PHP_INT_MAX); } while (in_array($invalid_attr, $valid_attr)); - if (true !== ($tmp = @mysqli_stmt_attr_set($stmt, $invalid_attr, 0))) + if (false !== ($tmp = @mysqli_stmt_attr_set($stmt, $invalid_attr, 0))) /* Although it may be desired to get false neither the MySQL Client Library nor mysqlnd are supposed to detect invalid codes */ printf("[006b] Expecting boolean/true for attribute %d, got %s/%s\n", $invalid_attr, gettype($tmp), $tmp); } @@ -265,4 +265,4 @@ require_once('skipifconnectfailure.inc'); require_once("clean_table.inc"); ?> --EXPECTF-- -done! \ No newline at end of file +done!