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