summaryrefslogtreecommitdiff
path: root/ext/sqlite/sqlite.c
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2003-07-13 08:48:43 +0000
committerWez Furlong <wez@php.net>2003-07-13 08:48:43 +0000
commite17043c2480078bdc5e94d2e0b811d766ff9fde1 (patch)
tree0aa5343a220d724fadb567eb6e64faa9bb64578d /ext/sqlite/sqlite.c
parent0b0962eb8e643e4945cb9b66d015a0083ce10455 (diff)
downloadphp-git-e17043c2480078bdc5e94d2e0b811d766ff9fde1.tar.gz
Fix bug #24575 (sqlite_popen did not request a new resource id when persistent
handles were re-used within a request).
Diffstat (limited to 'ext/sqlite/sqlite.c')
-rw-r--r--ext/sqlite/sqlite.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c
index 3f6e94f967..5b4b205544 100644
--- a/ext/sqlite/sqlite.c
+++ b/ext/sqlite/sqlite.c
@@ -314,7 +314,14 @@ static void php_sqlite_callback_dtor(void *pDest)
php_sqlite_callback_invalidator(funcs TSRMLS_CC);
}
}
+
+static ZEND_RSRC_DTOR_FUNC(php_sqlite_pdb_invalidator)
+{
+ struct php_sqlite_db *db = (struct php_sqlite_db*)rsrc->ptr;
+ db->rsrc_id = FAILURE;
+}
+
static ZEND_RSRC_DTOR_FUNC(php_sqlite_db_dtor)
{
if (rsrc->ptr) {
@@ -889,7 +896,7 @@ PHP_MINIT_FUNCTION(sqlite)
#endif
le_sqlite_db = zend_register_list_destructors_ex(php_sqlite_db_dtor, NULL, "sqlite database", module_number);
- le_sqlite_pdb = zend_register_list_destructors_ex(NULL, php_sqlite_db_dtor, "sqlite database (persistent)", module_number);
+ le_sqlite_pdb = zend_register_list_destructors_ex(php_sqlite_pdb_invalidator, php_sqlite_db_dtor, "sqlite database (persistent)", module_number);
le_sqlite_result = zend_register_list_destructors_ex(php_sqlite_result_dtor, NULL, "sqlite result", module_number);
REGISTER_LONG_CONSTANT("SQLITE_BOTH", PHPSQLITE_BOTH, CONST_CS|CONST_PERSISTENT);