summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2016-12-29 12:41:39 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2016-12-29 12:59:04 +0100
commit2ba3b275948050ce600c5234b66e840b640ca5a5 (patch)
treeee8e714784de9c12e6494ba78ac0798cbd3b64ed
parent79e47aae4100accd3141357ca2e7d8dc9981da6f (diff)
downloadphp-git-2ba3b275948050ce600c5234b66e840b640ca5a5.tar.gz
Revert "Fix #73530: Unsetting result set may reset other result set"
This reverts commit eb570294a289b45d0dd38efc71065d6b0d314c4b. That commit caused a regression, so it's probably best to revert it, and to tackle the issue for the next minor release.
-rw-r--r--NEWS4
-rw-r--r--ext/sqlite3/sqlite3.c4
-rw-r--r--ext/sqlite3/tests/bug73530.phpt32
3 files changed, 8 insertions, 32 deletions
diff --git a/NEWS b/NEWS
index 6ea2dd82eb..e957009839 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,10 @@ PHP NEWS
. Fixed bug #68447 (grapheme_extract take an extra trailing character).
(SATŌ Kentarō)
+- SQLite3:
+ . Reverted fix for bug #73530 (Unsetting result set may reset other result
+ set). (cmb)
+
08 Dec 2016, PHP 5.6.29
- Mbstring:
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
index b443657e3c..80d6b897f1 100644
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@ -2184,6 +2184,10 @@ 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
deleted file mode 100644
index 7e17dfecd3..0000000000
--- a/ext/sqlite3/tests/bug73530.phpt
+++ /dev/null
@@ -1,32 +0,0 @@
---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===