cvs: php-src /ext/sqlite sqlite.c
| From: | Wez Furlong | Date: | Sun, 13 Jul 2003 09:20:40 +0000 |
| Subject: | cvs: php-src /ext/sqlite sqlite.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-22531@lists.php.net to get a copy of this message | ||
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 <helly@php.net> |
+----------------------------------------------------------------------+
- $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 */