cvs: ZendEngine2 / zend.c

From: 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 }

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