summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-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);
}
/* }}} */