From: Ilia Alshanetsky Date: Wed, 10 Dec 2003 01:02:20 +0000 (+0000) Subject: Fixed a crash in SQLite when fetching data using sqlite_fetch_object() in X-Git-Tag: php-5.0.0b3RC1~157 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=06b528aa547042f5df45954ad9fea511288e11cd;p=php Fixed a crash in SQLite when fetching data using sqlite_fetch_object() in a loop. --- diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c index a6bb92c5f8..535455ccab 100644 --- a/ext/sqlite/sqlite.c +++ b/ext/sqlite/sqlite.c @@ -1845,7 +1845,11 @@ PHP_FUNCTION(sqlite_fetch_object) return; } - php_sqlite_fetch_array(res, PHPSQLITE_ASSOC, decode_binary, 1, &dataset TSRMLS_CC); + if (res->curr_row < res->nrows) { + php_sqlite_fetch_array(res, PHPSQLITE_ASSOC, decode_binary, 1, &dataset TSRMLS_CC); + } else { + RETURN_FALSE; + } object_and_properties_init(return_value, ce, NULL); zend_merge_properties(return_value, Z_ARRVAL(dataset), 1 TSRMLS_CC); diff --git a/ext/sqlite/tests/sqlite_025.phpt b/ext/sqlite/tests/sqlite_025.phpt new file mode 100755 index 0000000000..0a257610cc --- /dev/null +++ b/ext/sqlite/tests/sqlite_025.phpt @@ -0,0 +1,38 @@ +--TEST-- +sqlite: sqlite_fetch_object in a loop +--INI-- +sqlite.assoc_case=0 +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +object(stdClass)#1 (1) { + ["a"]=> + string(3) "one" +} +object(stdClass)#2 (1) { + ["a"]=> + string(3) "two" +} +object(stdClass)#1 (1) { + ["a"]=> + string(5) "three" +} \ No newline at end of file