diff options
Diffstat (limited to 'ext/sqlite/sqlite.c')
-rw-r--r-- | ext/sqlite/sqlite.c | 9 |
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); |