cvs: ZendEngine2(PHP_5_2) / zend_ts_hash.c
| From: | Antony Dovgal | Date: | Fri, 11 May 2007 12:21:26 +0000 |
| Subject: | cvs: ZendEngine2(PHP_5_2) / zend_ts_hash.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-5797@lists.php.net to get a copy of this message | ||
tony2001 Fri May 11 12:21:26 2007 UTC
Modified files: (Branch: PHP_5_2)
/ZendEngine2 zend_ts_hash.c
Log:
MFH: fix #41134 (zend_ts_hash_clean not thread-safe)
fix also zend_ts_hash_*destroy()
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_ts_hash.c?r1=1.14.2.1.2.1&r2=1.14.2.1.2.2&diff_format=u
Index: ZendEngine2/zend_ts_hash.c
diff -u ZendEngine2/zend_ts_hash.c:1.14.2.1.2.1 ZendEngine2/zend_ts_hash.c:1.14.2.1.2.2
--- ZendEngine2/zend_ts_hash.c:1.14.2.1.2.1 Mon Jan 1 09:35:47 2007
+++ ZendEngine2/zend_ts_hash.c Fri May 11 12:21:26 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_ts_hash.c,v 1.14.2.1.2.1 2007/01/01 09:35:47 sebastian Exp $ */
+/* $Id: zend_ts_hash.c,v 1.14.2.1.2.2 2007/05/11 12:21:26 tony2001 Exp $ */
#include "zend.h"
#include "zend_ts_hash.h"
@@ -81,17 +81,22 @@
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 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)