From 563c6949c80f4fd1b58c76b4c2bce20c08d55df9 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Fri, 11 May 2007 12:19:44 +0000 Subject: [PATCH] fix #41134 (zend_ts_hash_clean not thread-safe) fix also zend_ts_hash_*destroy() --- Zend/zend_ts_hash.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Zend/zend_ts_hash.c b/Zend/zend_ts_hash.c index 9f70719017..e59995dc27 100644 --- a/Zend/zend_ts_hash.c +++ b/Zend/zend_ts_hash.c @@ -81,17 +81,22 @@ ZEND_API int _zend_ts_hash_init_ex(TsHashTable *ht, uint nSize, hash_func_t pHas ZEND_API void zend_ts_hash_destroy(TsHashTable *ht) { + begin_write(ht); + zend_hash_destroy(TS_HASH(ht)); + end_write(ht); + #ifdef ZTS tsrm_mutex_free(ht->mx_reader); tsrm_mutex_free(ht->mx_writer); #endif - zend_hash_destroy(TS_HASH(ht)); } ZEND_API void zend_ts_hash_clean(TsHashTable *ht) { ht->reader = 0; + begin_write(ht); zend_hash_clean(TS_HASH(ht)); + end_write(ht); } ZEND_API int _zend_ts_hash_add_or_update(TsHashTable *ht, char *arKey, uint nKeyLength, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC) @@ -140,11 +145,14 @@ ZEND_API int zend_ts_hash_add_empty_element(TsHashTable *ht, char *arKey, uint n ZEND_API void zend_ts_hash_graceful_destroy(TsHashTable *ht) { + begin_write(ht); + zend_hash_graceful_destroy(TS_HASH(ht)); + end_write(ht); + #ifdef ZTS tsrm_mutex_free(ht->mx_reader); tsrm_mutex_free(ht->mx_reader); #endif - zend_hash_graceful_destroy(TS_HASH(ht)); } ZEND_API void zend_ts_hash_apply(TsHashTable *ht, apply_func_t apply_func TSRMLS_DC) -- 2.50.1