]> granicus.if.org Git - php/commitdiff
Fix bug #24575 (sqlite_popen did not request a new resource id when persistent
authorWez Furlong <wez@php.net>
Sun, 13 Jul 2003 08:48:43 +0000 (08:48 +0000)
committerWez Furlong <wez@php.net>
Sun, 13 Jul 2003 08:48:43 +0000 (08:48 +0000)
handles were re-used within a request).

ext/sqlite/sqlite.c

index 3f6e94f967c60bbc29203403d5b4ba9ae07c3766..5b4b205544453a387add0cc3d3fc6d9b603b622a 100644 (file)
@@ -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);