From: Zeev Suraski Date: Thu, 2 Aug 2001 06:16:20 +0000 (+0000) Subject: Some cleanup X-Git-Tag: PRE_ENGINE2_SPLIT~132 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7deb44e36d98395af07e629ad9b646e0adb8cf55;p=php Some cleanup --- diff --git a/Zend/zend.c b/Zend/zend.c index a44c9bfd7b..70e87b043e 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -315,7 +315,7 @@ static void executor_globals_ctor(zend_executor_globals *executor_globals TSRMLS static void executor_globals_dtor(zend_executor_globals *executor_globals TSRMLS_DC) { zend_shutdown_constants(TSRMLS_C); - zend_destroy_rsrc_plist(TSRMLS_C); + zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC); zend_ini_shutdown(TSRMLS_C); } @@ -437,7 +437,7 @@ void zend_shutdown(TSRMLS_D) zend_shutdown_timeout_thread(); #endif #ifndef ZTS - zend_destroy_rsrc_plist(); + zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC); #endif zend_destroy_rsrc_list_dtors(); zend_hash_destroy(&module_registry); diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index cf15349fec..6ee4fd9634 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -177,9 +177,10 @@ void shutdown_executor(TSRMLS_D) zend_hash_apply(EG(class_table), (apply_func_t) is_not_internal_class TSRMLS_CC); } zend_end_try(); - zend_destroy_rsrc_list(TSRMLS_C); /* must be destroyed after the main symbol table and - * op arrays are destroyed. - */ + /* The regular list must be destroyed after the main symbol table and + * op arrays are destroyed. + */ + zend_destroy_rsrc_list(&EG(regular_list) TSRMLS_CC); zend_try { clean_non_persistent_constants(TSRMLS_C); diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 437190e001..5ccebd8faf 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -524,32 +524,6 @@ ZEND_API int zend_hash_del_key_or_index(HashTable *ht, char *arKey, uint nKeyLen return FAILURE; } -ZEND_API void zend_hash_reverse_destroy(HashTable *ht) -{ - Bucket *p, *q; - - while (1) { - p = ht->pListTail; - if (!p) { - break; - } - q = p->pListLast; - if (q) { - q->pListNext = NULL; - } - ht->pListTail = q; - - if (ht->pDestructor) { - ht->pDestructor(p->pData); - } - if (!p->pDataPtr && p->pData) { - pefree(p->pData, ht->persistent); - } - pefree(p, ht->persistent); - } - pefree(ht->arBuckets, ht->persistent); -} - ZEND_API void zend_hash_destroy(HashTable *ht) { diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index c1d593f76e..72eecb4748 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -37,8 +37,6 @@ typedef ulong (*hash_func_t)(char *arKey, uint nKeyLength); typedef int (*compare_func_t)(const void *, const void *); typedef void (*sort_func_t)(void *, size_t, register size_t, compare_func_t); typedef void (*dtor_func_t)(void *pDest); -typedef int (*apply_func_t)(void *pDest TSRMLS_DC); -typedef int (*apply_func_arg_t)(void *pDest, void *argument TSRMLS_DC); typedef void (*copy_ctor_func_t)(void *pElement); struct _hashtable; @@ -81,8 +79,6 @@ BEGIN_EXTERN_C() ZEND_API int zend_hash_init(HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, int persistent); ZEND_API int zend_hash_init_ex(HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, int persistent, zend_bool bApplyProtection); ZEND_API void zend_hash_destroy(HashTable *ht); -ZEND_API void zend_hash_reverse_destroy(HashTable *ht); - ZEND_API void zend_hash_clean(HashTable *ht); /* additions/updates/changes */ @@ -113,6 +109,8 @@ typedef struct _zend_hash_key { } zend_hash_key; +typedef int (*apply_func_t)(void *pDest TSRMLS_DC); +typedef int (*apply_func_arg_t)(void *pDest, void *argument TSRMLS_DC); typedef int (*apply_func_args_t)(void *pDest, int num_args, va_list args, zend_hash_key *hash_key); ZEND_API void zend_hash_graceful_destroy(HashTable *ht); diff --git a/Zend/zend_list.c b/Zend/zend_list.c index 6f868715da..dc61aa3272 100644 --- a/Zend/zend_list.c +++ b/Zend/zend_list.c @@ -228,10 +228,9 @@ int zend_init_rsrc_plist(TSRMLS_D) } -void zend_destroy_rsrc_list(TSRMLS_D) +void zend_destroy_rsrc_list(HashTable *ht TSRMLS_DC) { Bucket *p, *q; - HashTable *ht = &EG(regular_list); while (1) { p = ht->pListTail; @@ -258,13 +257,6 @@ void zend_destroy_rsrc_list(TSRMLS_D) } - -void zend_destroy_rsrc_plist(TSRMLS_D) -{ - zend_hash_reverse_destroy(&EG(persistent_list)); -} - - static int clean_module_resource(zend_rsrc_list_entry *le, int *resource_id TSRMLS_DC) { if (le->type == *resource_id) { diff --git a/Zend/zend_list.h b/Zend/zend_list.h index c17d2c5ff5..6150a42efe 100644 --- a/Zend/zend_list.h +++ b/Zend/zend_list.h @@ -68,8 +68,7 @@ void plist_entry_destructor(void *ptr); void zend_clean_module_rsrc_dtors(int module_number TSRMLS_DC); int zend_init_rsrc_list(TSRMLS_D); int zend_init_rsrc_plist(TSRMLS_D); -void zend_destroy_rsrc_list(TSRMLS_D); -void zend_destroy_rsrc_plist(TSRMLS_D); +void zend_destroy_rsrc_list(HashTable *ht TSRMLS_DC); int zend_init_rsrc_list_dtors(void); void zend_destroy_rsrc_list_dtors(void);