wez             Sun Jul 13 05:20:40 2003 EDT

  Modified files:              
    /php-src/ext/sqlite sqlite.c 
  Log:
  MFB better popen fix
  
  
Index: php-src/ext/sqlite/sqlite.c
diff -u php-src/ext/sqlite/sqlite.c:1.73 php-src/ext/sqlite/sqlite.c:1.74
--- php-src/ext/sqlite/sqlite.c:1.73    Sun Jul 13 04:48:43 2003
+++ php-src/ext/sqlite/sqlite.c Sun Jul 13 05:20:40 2003
@@ -17,7 +17,7 @@
    |          Marcus Boerger <[EMAIL PROTECTED]>                              |
    +----------------------------------------------------------------------+
 
-   $Id: sqlite.c,v 1.73 2003/07/13 08:48:43 wez Exp $ 
+   $Id: sqlite.c,v 1.74 2003/07/13 09:20:40 wez Exp $ 
 */
 
 #ifdef HAVE_CONFIG_H
@@ -315,17 +315,11 @@
        }
 }
 
-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) {
                struct php_sqlite_db *db = (struct php_sqlite_db*)rsrc->ptr;
+       
                sqlite_close(db->db);
 
                zend_hash_destroy(&db->callbacks);
@@ -896,7 +890,7 @@
 #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(php_sqlite_pdb_invalidator, 
php_sqlite_db_dtor, "sqlite database (persistent)", module_number);
+       le_sqlite_pdb = zend_register_list_destructors_ex(NULL, 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);
@@ -955,7 +949,7 @@
 {
        php_info_print_table_start();
        php_info_print_table_header(2, "SQLite support", "enabled");
-       php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " 
$Id: sqlite.c,v 1.73 2003/07/13 08:48:43 wez Exp $");
+       php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " 
$Id: sqlite.c,v 1.74 2003/07/13 09:20:40 wez Exp $");
        php_info_print_table_row(2, "SQLite Library", sqlite_libversion());
        php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding());
        php_info_print_table_end();
@@ -1080,8 +1074,16 @@
                                /* give it a valid resource id for this request */
                                db->rsrc_id = ZEND_REGISTER_RESOURCE(return_value, db, 
le_sqlite_pdb);
                        } else {
-                               /* already accessed this request; map it */
-                               ZVAL_RESOURCE(return_value, db->rsrc_id);
+                               int type;
+                               /* sanity check to ensure that the resource is still a 
valid regular resource
+                                * number */
+                               if (_zend_list_find(db->rsrc_id, &type) == db) {
+                                       /* already accessed this request; map it */
+                                       zend_list_addref(db->rsrc_id);
+                                       ZVAL_RESOURCE(return_value, db->rsrc_id);
+                               } else {
+                                       db->rsrc_id = 
ZEND_REGISTER_RESOURCE(return_value, db, le_sqlite_pdb);
+                               }
                        }
 
                        /* all set */



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to