summaryrefslogtreecommitdiff
path: root/ext/sqlite3
diff options
context:
space:
mode:
Diffstat (limited to 'ext/sqlite3')
-rw-r--r--ext/sqlite3/php_sqlite3_structs.h2
-rw-r--r--ext/sqlite3/sqlite3.c5
-rw-r--r--ext/sqlite3/tests/bug79294.phpt34
3 files changed, 36 insertions, 5 deletions
diff --git a/ext/sqlite3/php_sqlite3_structs.h b/ext/sqlite3/php_sqlite3_structs.h
index f189ea30af..3de8aac0d4 100644
--- a/ext/sqlite3/php_sqlite3_structs.h
+++ b/ext/sqlite3/php_sqlite3_structs.h
@@ -108,7 +108,7 @@ struct _php_sqlite3_result_object {
zval stmt_obj_zval;
int is_prepared_statement;
- int complete;
+ int complete; // unused
zend_object zo;
};
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
index 910181a3b7..3a3ade7bc3 100644
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@ -1983,7 +1983,7 @@ PHP_METHOD(sqlite3result, columnType)
return;
}
- if (result_obj->complete) {
+ if (!sqlite3_data_count(result_obj->stmt_obj->stmt)) {
RETURN_FALSE;
}
@@ -2038,7 +2038,6 @@ PHP_METHOD(sqlite3result, fetchArray)
break;
case SQLITE_DONE:
- result_obj->complete = 1;
RETURN_FALSE;
break;
@@ -2066,8 +2065,6 @@ PHP_METHOD(sqlite3result, reset)
RETURN_FALSE;
}
- result_obj->complete = 0;
-
RETURN_TRUE;
}
/* }}} */
diff --git a/ext/sqlite3/tests/bug79294.phpt b/ext/sqlite3/tests/bug79294.phpt
new file mode 100644
index 0000000000..5538e3886b
--- /dev/null
+++ b/ext/sqlite3/tests/bug79294.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Bug #79294 ()::columnType() may fail after SQLite3Stmt::reset())
+--SKIPIF--
+<?php
+if (!extension_loaded('sqlite3')) die('sqlite3 extension not available');
+?>
+--FILE--
+<?php
+$db = new SQLite3(':memory:');
+$db->exec("CREATE TABLE foo (bar INT)");
+$db->exec("INSERT INTO foo VALUES (1)");
+
+$stmt = $db->prepare("SELECT * FROM foo");
+$res = $stmt->execute();
+var_dump($res->fetchArray() !== false);
+var_dump($res->columnType(0));
+var_dump($res->fetchArray() !== false);
+var_dump($res->columnType(0));
+$stmt->reset();
+var_dump($res->fetchArray() !== false);
+var_dump($res->columnType(0));
+$res->reset();
+var_dump($res->fetchArray() !== false);
+var_dump($res->columnType(0));
+?>
+--EXPECT--
+bool(true)
+int(1)
+bool(false)
+bool(false)
+bool(true)
+int(1)
+bool(true)
+int(1)