Re: [ZEND-ENGINE-CVS] cvs: Zend / zend_hash.c zend_hash.h zend_list.c

From: Date: Fri, 19 Apr 2002 16:05:37 +0000
Subject: Re: [ZEND-ENGINE-CVS] cvs: Zend / zend_hash.c zend_hash.h zend_list.c
References: 1  Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-57@lists.php.net to get a copy of this message
Please update Engine 2 also. Andi At 17:37 18/04/2002 +0000, Thies C. Arntzen wrote:
thies           Thu Apr 18 13:37:30 2002 EDT
Modified files:
    /Zend       zend_hash.c zend_hash.h zend_list.c
Log: make sure the resource-list is always consistent during shutdown. this fixes #15499 (which seems unrelated, but it isn't;-) Index: Zend/zend_hash.c diff -u Zend/zend_hash.c:1.83 Zend/zend_hash.c:1.84
--- Zend/zend_hash.c:1.83       Sun Jan  6 10:21:09 2002
+++ Zend/zend_hash.c    Thu Apr 18 13:37:28 2002
@@ -651,6 +651,23 @@
        SET_INCONSISTENT(HT_DESTROYED);
} +ZEND_API void zend_hash_graceful_reverse_destroy(HashTable *ht) +{
+       Bucket *p;
+
+       IS_CONSISTENT(ht);
+
+       p = ht->pListTail;
+       while (p != NULL) {
+               zend_hash_apply_deleter(ht, p);
+               p = ht->pListTail;
+       }
+
+       pefree(ht->arBuckets, ht->persistent);
+
+       SET_INCONSISTENT(HT_DESTROYED);
+} + /* This is used to selectively delete certain entries from a hashtable. * destruct() receives the data and decides if the entry should be deleted * or not Index: Zend/zend_hash.h diff -u Zend/zend_hash.h:1.55 Zend/zend_hash.h:1.56
--- Zend/zend_hash.h:1.55       Sun Jan  6 10:21:09 2002
+++ Zend/zend_hash.h    Thu Apr 18 13:37:29 2002
@@ -119,6 +119,7 @@ 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); +ZEND_API void zend_hash_graceful_reverse_destroy(HashTable *ht); ZEND_API void zend_hash_apply(HashTable *ht, apply_func_t apply_func TSRMLS_DC); ZEND_API void zend_hash_apply_with_argument(HashTable *ht, apply_func_arg_t apply_func, void * TSRMLS_DC); ZEND_API void zend_hash_apply_with_arguments(HashTable *ht, apply_func_args_t apply_func, int, ...); Index: Zend/zend_list.c diff -u Zend/zend_list.c:1.52 Zend/zend_list.c:1.53
--- Zend/zend_list.c:1.52       Sun Jan  6 10:21:09 2002
+++ Zend/zend_list.c    Thu Apr 18 13:37:29 2002
@@ -230,32 +230,8 @@ void zend_destroy_rsrc_list(HashTable *ht TSRMLS_DC) {
-       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) {
-                       zend_try {
-                               ht->pDestructor(p->pData);
-                       } zend_end_try();
-               }
-               if (!p->pDataPtr && p->pData) {
-                       pefree(p->pData, ht->persistent);
-               }
-               pefree(p, ht->persistent);
-       }
-       pefree(ht->arBuckets, ht->persistent);
+       zend_hash_graceful_reverse_destroy(ht);
} - static int clean_module_resource(zend_rsrc_list_entry *le, int *resource_id TSRMLS_DC) { -- Zend Engine CVS Mailing List (http://cvs.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.zend-engine.cvs (#57) next »