helly Mon Mar 15 14:47:23 2004 EDT
Added files:
/php-src/ext/pgsql/tests 80_bug27597.phpt
Modified files:
/php-src NEWS
/php-src/ext/pgsql pgsql.c
Log:
Bugfix #27597 pg_fetch_array not returning false .
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1636&r2=1.1637&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1636 php-src/NEWS:1.1637
--- php-src/NEWS:1.1636 Mon Mar 15 13:22:01 2004
+++ php-src/NEWS Mon Mar 15 14:47:11 2004
@@ -46,6 +46,7 @@
- Fixed problem preventing startup errors from being displayed. (Marcus)
- Fixed start-up problem if both SPL and SimpleXML were enabled. The double
initialization of apache 1.3 was causing problems here. (Marcus, Derick)
+- Fixed bug #27597 (pg_fetch_array not returning false). (Marcus)
- Fixed bug #27586 (ArrayObject::getIterator crashes with [] assignment).
(Marcus)
- Fixed bug #27537 (Objects pointing to each other segfaults). (Dmitry)
http://cvs.php.net/diff.php/php-src/ext/pgsql/pgsql.c?r1=1.306&r2=1.307&ty=u
Index: php-src/ext/pgsql/pgsql.c
diff -u php-src/ext/pgsql/pgsql.c:1.306 php-src/ext/pgsql/pgsql.c:1.307
--- php-src/ext/pgsql/pgsql.c:1.306 Wed Feb 25 15:16:27 2004
+++ php-src/ext/pgsql/pgsql.c Mon Mar 15 14:47:15 2004
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c,v 1.306 2004/02/25 20:16:27 abies Exp $ */
+/* $Id: pgsql.c,v 1.307 2004/03/15 19:47:15 helly Exp $ */
#include <stdlib.h>
@@ -1403,7 +1403,7 @@
/* {{{ void php_pgsql_fetch_hash */
static void php_pgsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type, int
into_object)
{
- zval *result;
+ zval *result, *zrow;
PGresult *pgsql_result;
pgsql_result_handle *pg_result;
int i, num_fields, pgsql_row, use_row;
@@ -1432,10 +1432,14 @@
result_type = PGSQL_ASSOC;
use_row = 0;
} else {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|ll", &result,
&row, &result_type) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|zl", &result,
&zrow, &result_type) == FAILURE) {
return;
}
- use_row = ZEND_NUM_ARGS() > 1;
+ use_row = ZEND_NUM_ARGS() > 1 && Z_TYPE_P(zrow) != IS_NULL;
+ if (use_row) {
+ convert_to_long_ex(&zrow);
+ row = Z_LVAL_P(zrow);
+ }
}
if (!(result_type & PGSQL_BOTH)) {
http://cvs.php.net/co.php/php-src/ext/pgsql/tests/80_bug27597.phpt?r=1.1&p=1
Index: php-src/ext/pgsql/tests/80_bug27597.phpt
+++ php-src/ext/pgsql/tests/80_bug27597.phpt
--TEST--
Bug #27597 pg_fetch_array not returning false
--SKIPIF--
<?php
require_once('skipif.inc');
?>
--FILE--
<?php
require_once('config.inc');
$dbh = @pg_connect($conn_str);
if (!$dbh) {
die ("Could not connect to the server");
}
@pg_query("DROP TABLE id");
pg_query("CREATE TABLE id (id INT)");
for ($i=0; $i<4; $i++) {
pg_query("INSERT INTO id (id) VALUES ($i)");
}
function xi_fetch_array($res, $type = PGSQL_ASSOC) {
$a = pg_fetch_array($res, NULL, $type) ;
return $a ;
}
$res = pg_query("SELECT * FROM id");
$i = 0; // endless-loop protection
while($row = xi_fetch_array($res)) {
print_r($row);
if ($i++ > 4) {
echo "ENDLESS-LOOP";
exit(1);
}
}
pg_close($dbh);
?>
===DONE===
--EXPECTF--
Array
(
[id] => 0
)
Array
(
[id] => 1
)
Array
(
[id] => 2
)
Array
(
[id] => 3
)
===DONE===
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php