]> granicus.if.org Git - php/commitdiff
Fixed bug #70481 (Memory leak in auto_global_copy_ctor() in ZTS build)
authorXinchen Hui <laruence@gmail.com>
Fri, 18 Sep 2015 09:27:39 +0000 (17:27 +0800)
committerXinchen Hui <laruence@gmail.com>
Fri, 18 Sep 2015 09:27:39 +0000 (17:27 +0800)
NEWS
Zend/zend.c

diff --git a/NEWS b/NEWS
index 93b89996688a205d119d00f6a11c6da3af9434e3..fb99eb0c4e2d656d1fb23b27a1c869853298d140 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 01 Oct 2015, PHP 7.0.0 RC 4
 
+- Core:
+  . Fixed bug #70481 (Memory leak in auto_global_copy_ctor() in ZTS build).
+    (Laruence)
 
 
 17 Sep 2015, PHP 7.0.0 RC 3
index c521df9ce2cc8d67d9e5425efb5f99e3886f457b..0a70ccc3b551c4b19a1a847241d3a6d7ddf0edf7 100644 (file)
@@ -446,26 +446,34 @@ static void zend_init_call_trampoline_op(void) /* {{{ */
 }
 /* }}} */
 
+static void auto_global_dtor(zval *zv) /* {{{ */
+{
+       free(Z_PTR_P(zv));
+}
+/* }}} */
+
 #ifdef ZTS
-static void function_copy_ctor(zval *zv)
+static void function_copy_ctor(zval *zv) /* {{{ */
 {
        zend_function *old_func = Z_FUNC_P(zv);
        Z_FUNC_P(zv) = pemalloc(sizeof(zend_internal_function), 1);
        memcpy(Z_FUNC_P(zv), old_func, sizeof(zend_internal_function));
        function_add_ref(Z_FUNC_P(zv));
 }
+/* }}} */
 
-static void auto_global_copy_ctor(zval *zv)
+static void auto_global_copy_ctor(zval *zv) /* {{{ */
 {
        zend_auto_global *old_ag = (zend_auto_global *) Z_PTR_P(zv);
        zend_auto_global *new_ag = pemalloc(sizeof(zend_auto_global), 1);
 
-       new_ag->name = zend_string_copy(old_ag->name);
+       new_ag->name = old_ag->name;
        new_ag->auto_global_callback = old_ag->auto_global_callback;
        new_ag->jit = old_ag->jit;
 
        Z_PTR_P(zv) = new_ag;
 }
+/* }}} */
 
 static void compiler_globals_ctor(zend_compiler_globals *compiler_globals) /* {{{ */
 {
@@ -482,7 +490,7 @@ static void compiler_globals_ctor(zend_compiler_globals *compiler_globals) /* {{
        zend_set_default_compile_time_values();
 
        compiler_globals->auto_globals = (HashTable *) malloc(sizeof(HashTable));
-       zend_hash_init_ex(compiler_globals->auto_globals, 8, NULL, NULL, 1, 0);
+       zend_hash_init_ex(compiler_globals->auto_globals, 8, NULL, auto_global_dtor, 1, 0);
        zend_hash_copy(compiler_globals->auto_globals, global_auto_globals_table, auto_global_copy_ctor);
 
        compiler_globals->last_static_member = zend_hash_num_elements(compiler_globals->class_table);
@@ -609,12 +617,6 @@ static void module_destructor_zval(zval *zv) /* {{{ */
 }
 /* }}} */
 
-static void auto_global_dtor(zval *zv) /* {{{ */
-{
-       free(Z_PTR_P(zv));
-}
-/* }}} */
-
 static zend_bool php_auto_globals_create_globals(zend_string *name) /* {{{ */
 {
        zval globals;