summaryrefslogtreecommitdiff
path: root/ext/phar
diff options
context:
space:
mode:
authorGreg Beaver <cellog@php.net>2008-06-20 04:50:11 +0000
committerGreg Beaver <cellog@php.net>2008-06-20 04:50:11 +0000
commit5233505043e8fd6b2f73a29c2c7a8148b5c651a4 (patch)
treec19a98263a883d10be17ea4e69593b4a74f6c902 /ext/phar
parent48b0cc41349653c401b6d7a973e0054b20ac4548 (diff)
downloadphp-git-5233505043e8fd6b2f73a29c2c7a8148b5c651a4.tar.gz
revert really bad solution to the zend_init_rsrc_list/zend_destroy_rsrc_list problem, replace with real solution
Diffstat (limited to 'ext/phar')
-rw-r--r--ext/phar/phar.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/ext/phar/phar.c b/ext/phar/phar.c
index 2e3a901945..59bf81a432 100644
--- a/ext/phar/phar.c
+++ b/ext/phar/phar.c
@@ -115,7 +115,9 @@ static void phar_split_cache_list(TSRMLS_D)
/* fake request startup */
PHAR_GLOBALS->request_init = 1;
- //zend_init_rsrc_list(TSRMLS_C);
+ if (zend_hash_init(&EG(regular_list), 0, NULL, list_entry_destructor, 0) == SUCCESS) {
+ EG(regular_list).nNextFreeElement=1; /* we don't want resource id 0 */
+ }
PHAR_G(has_bz2) = zend_hash_exists(&module_registry, "bz2", sizeof("bz2"));
PHAR_G(has_zlib) = zend_hash_exists(&module_registry, "zlib", sizeof("zlib"));
/* these two are dummies and will be destroyed later */
@@ -149,8 +151,8 @@ finish_error:
PHAR_GLOBALS->phar_alias_map.arBuckets = 0;
zend_hash_destroy(&cached_phars);
zend_hash_destroy(&cached_alias);
- //zend_destroy_rsrc_list(&EG(regular_list) TSRMLS_CC);
- //memset(&EG(regular_list), 0, sizeof(HashTable));
+ zend_hash_graceful_reverse_destroy(&EG(regular_list));
+ memset(&EG(regular_list), 0, sizeof(HashTable));
/* free cached manifests */
PHAR_GLOBALS->request_init = 0;
return;
@@ -172,8 +174,8 @@ finish_error:
cached_alias = PHAR_GLOBALS->phar_alias_map;
PHAR_GLOBALS->phar_fname_map.arBuckets = 0;
PHAR_GLOBALS->phar_alias_map.arBuckets = 0;
- //zend_destroy_rsrc_list(&EG(regular_list) TSRMLS_CC);
- //memset(&EG(regular_list), 0, sizeof(HashTable));
+ zend_hash_graceful_reverse_destroy(&EG(regular_list));
+ memset(&EG(regular_list), 0, sizeof(HashTable));
efree(tmp);
}
/* }}} */