summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--ext/sqlite3/sqlite3.c4
-rw-r--r--ext/sqlite3/tests/bug73530.phpt32
3 files changed, 35 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 9a2f915c1f..33a9ae1ba0 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,9 @@ PHP NEWS
. Fixed bug #72776 (Invalid parameter in memcpy function trough
openssl_pbkdf2). (Jakub Zelenka)
+- SQLite3:
+ . Fixed bug #73530 (Unsetting result set may reset other result set). (cmb)
+
10 Nov 2016, PHP 5.6.28
- Core:
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
index 80d6b897f1..b443657e3c 100644
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@ -2184,10 +2184,6 @@ static void php_sqlite3_result_object_free_storage(void *object TSRMLS_DC) /* {{
}
if (intern->stmt_obj_zval) {
- if (intern->stmt_obj->initialised) {
- sqlite3_reset(intern->stmt_obj->stmt);
- }
-
if (intern->is_prepared_statement == 0) {
zval_dtor(intern->stmt_obj_zval);
FREE_ZVAL(intern->stmt_obj_zval);
diff --git a/ext/sqlite3/tests/bug73530.phpt b/ext/sqlite3/tests/bug73530.phpt
new file mode 100644
index 0000000000..7e17dfecd3
--- /dev/null
+++ b/ext/sqlite3/tests/bug73530.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Bug #73530 (Unsetting result set may reset other result set)
+--SKIPIF--
+<?php
+if (!extension_loaded('sqlite3')) die('skip sqlite3 extension not available');
+?>
+--FILE--
+<?php
+$db = new SQLite3(':memory:');
+$db->exec("CREATE TABLE foo (num int)");
+$db->exec("INSERT INTO foo VALUES (0)");
+$db->exec("INSERT INTO foo VALUES (1)");
+$stmt = $db->prepare("SELECT * FROM foo WHERE NUM = ?");
+$stmt->bindValue(1, 0, SQLITE3_INTEGER);
+$res1 = $stmt->execute();
+$res1->finalize();
+$stmt->clear();
+$stmt->reset();
+$stmt->bindValue(1, 1, SQLITE3_INTEGER);
+$res2 = $stmt->execute();
+while ($row = $res2->fetchArray(SQLITE3_ASSOC)) {
+ var_dump($row);
+ unset($res1);
+}
+?>
+===DONE===
+--EXPECT--
+array(1) {
+ ["num"]=>
+ int(1)
+}
+===DONE===