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

From: Date: Tue, 23 Apr 2002 06:54:10 +0000
Subject: Re: [ZEND-ENGINE-CVS] cvs: Zend(PHP_4_2_0) / 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-66@lists.php.net to get a copy of this message
Hey Thies, nice in time again :) Derick On Tue, 23 Apr 2002, Thies C. Arntzen wrote: > thies Tue Apr 23 02:53:29 2002 EDT > > Modified files: (Branch: PHP_4_2_0) > /Zend zend_hash.c zend_hash.h zend_list.c > Log: > MFH. make sure resource list is always consistent during request shutdown. > > > Index: Zend/zend_hash.c > diff -u Zend/zend_hash.c:1.83 Zend/zend_hash.c:1.83.2.1 > --- Zend/zend_hash.c:1.83 Sun Jan 6 10:21:09 2002 > +++ Zend/zend_hash.c Tue Apr 23 02:53:26 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.55.2.1 > --- Zend/zend_hash.h:1.55 Sun Jan 6 10:21:09 2002 > +++ Zend/zend_hash.h Tue Apr 23 02:53:28 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.52.2.1 > --- Zend/zend_list.c:1.52 Sun Jan 6 10:21:09 2002 > +++ Zend/zend_list.c Tue Apr 23 02:53: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 (#66) next »