cvs: ZendEngine2 / zend.c
| From: | Marcus Boerger | Date: | Fri, 12 Dec 2003 10:50:23 +0000 |
| Subject: | cvs: ZendEngine2 / zend.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-2105@lists.php.net to get a copy of this message | ||
helly Fri Dec 12 05:50:23 2003 EDT
Modified files:
/ZendEngine2 zend.c
Log:
Fix memleaks in ZTS mode
Index: ZendEngine2/zend.c
diff -u ZendEngine2/zend.c:1.256 ZendEngine2/zend.c:1.257
--- ZendEngine2/zend.c:1.256 Fri Dec 12 03:25:58 2003
+++ ZendEngine2/zend.c Fri Dec 12 05:50:23 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend.c,v 1.256 2003/12/12 08:25:58 helly Exp $ */
+/* $Id: zend.c,v 1.257 2003/12/12 10:50:23 helly Exp $ */
#include "zend.h"
#include "zend_extensions.h"
@@ -451,11 +451,13 @@
{
if (compiler_globals->function_table != GLOBAL_FUNCTION_TABLE) {
zend_hash_destroy(compiler_globals->function_table);
+ free(compiler_globals->function_table);
}
if (compiler_globals->class_table != GLOBAL_CLASS_TABLE) {
zend_hash_destroy(compiler_globals->class_table);
+ free(compiler_globals->class_table);
}
- if (compiler_globals->auto_globals != global_auto_globals_table) {
+ if (compiler_globals->auto_globals != GLOBAL_AUTO_GLOBALS_TABLE) {
zend_hash_destroy(compiler_globals->auto_globals);
free(compiler_globals->auto_globals);
}
@@ -609,7 +611,10 @@
executor_globals = ts_resource(executor_globals_id);
tsrm_ls = ts_resource_ex(0, NULL);
- compiler_globals_dtor(compiler_globals, tsrm_ls);
+ compiler_globals_dtor(compiler_globals TSRMLS_CC);
+ compiler_globals->function_table = (HashTable *) malloc(sizeof(HashTable));
+ compiler_globals->class_table = (HashTable *) malloc(sizeof(HashTable));
+
*compiler_globals->function_table = *GLOBAL_FUNCTION_TABLE;
*compiler_globals->class_table = *GLOBAL_CLASS_TABLE;
compiler_globals->auto_globals = GLOBAL_AUTO_GLOBALS_TABLE;
@@ -669,7 +674,10 @@
*GLOBAL_CLASS_TABLE = *compiler_globals->class_table;
*GLOBAL_CONSTANTS_TABLE = *executor_globals->zend_constants;
zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC);
+ free(compiler_globals->function_table);
+ free(compiler_globals->class_table);
compiler_globals_ctor(compiler_globals, tsrm_ls);
+ free(EG(zend_constants));
executor_globals_ctor(executor_globals, tsrm_ls);
}
#endif
@@ -696,10 +704,14 @@
zend_shutdown_constants(TSRMLS_C);
#ifdef ZTS
+ zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC);
zend_hash_destroy(GLOBAL_CONSTANTS_TABLE);
free(GLOBAL_FUNCTION_TABLE);
free(GLOBAL_CLASS_TABLE);
free(GLOBAL_CONSTANTS_TABLE);
+ GLOBAL_FUNCTION_TABLE = NULL;
+ GLOBAL_CLASS_TABLE = NULL;
+ GLOBAL_AUTO_GLOBALS_TABLE = NULL;
#endif
}