iliaa Tue Dec 9 20:02:21 2003 EDT
Added files:
/php-src/ext/sqlite/tests sqlite_025.phpt
Modified files:
/php-src/ext/sqlite sqlite.c
Log:
Fixed a crash in SQLite when fetching data using sqlite_fetch_object() in
a loop.
Index: php-src/ext/sqlite/sqlite.c
diff -u php-src/ext/sqlite/sqlite.c:1.101 php-src/ext/sqlite/sqlite.c:1.102
--- php-src/ext/sqlite/sqlite.c:1.101 Sat Oct 25 19:17:15 2003
+++ php-src/ext/sqlite/sqlite.c Tue Dec 9 20:02:19 2003
@@ -17,7 +17,7 @@
| Marcus Boerger <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
- $Id: sqlite.c,v 1.101 2003/10/25 23:17:15 helly Exp $
+ $Id: sqlite.c,v 1.102 2003/12/10 01:02:19 iliaa Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -1072,7 +1072,7 @@
{
php_info_print_table_start();
php_info_print_table_header(2, "SQLite support", "enabled");
- php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION "
$Id: sqlite.c,v 1.101 2003/10/25 23:17:15 helly Exp $");
+ php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION "
$Id: sqlite.c,v 1.102 2003/12/10 01:02:19 iliaa Exp $");
php_info_print_table_row(2, "SQLite Library", sqlite_libversion());
php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding());
php_info_print_table_end();
@@ -1845,7 +1845,11 @@
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);
Index: php-src/ext/sqlite/tests/sqlite_025.phpt
+++ php-src/ext/sqlite/tests/sqlite_025.phpt
--TEST--
sqlite: sqlite_fetch_object in a loop
--INI--
sqlite.assoc_case=0
--SKIPIF--
<?php # vim:ft=php
if (!extension_loaded("sqlite")) print "skip"; ?>
--FILE--
<?php
include "blankdb.inc";
sqlite_query($db, "CREATE TABLE strings(a)");
foreach (array("one", "two", "three") as $str) {
sqlite_query($db, "INSERT INTO strings VALUES('$str')");
}
$res = sqlite_query("SELECT * FROM strings", $db);
while (($obj = sqlite_fetch_object($res))) {
var_dump($obj);
}
sqlite_close($db);
?>
--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"
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php