From: Greg Beaver Date: Fri, 20 Jun 2008 04:50:11 +0000 (+0000) Subject: revert really bad solution to the zend_init_rsrc_list/zend_destroy_rsrc_list problem... X-Git-Tag: php-5.3.0alpha1~705 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5233505043e8fd6b2f73a29c2c7a8148b5c651a4;p=php revert really bad solution to the zend_init_rsrc_list/zend_destroy_rsrc_list problem, replace with real solution --- 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); } /* }}} */