Commit:    ad553a7af237818f5d7690e97a03ffe66ec9ab37
Author:    Xinchen Hui <larue...@php.net>         Mon, 10 Dec 2012 20:28:27 
+0800
Parents:   db6d8e27247429746985cf1c424e73728449922f
Branches:  PHP-5.3

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=ad553a7af237818f5d7690e97a03ffe66ec9ab37

Log:
Fixed bug #63726 (Memleak with static properties and internal/user classes)

Bugs:
https://bugs.php.net/63726

Changed paths:
  M  NEWS
  M  Zend/zend_API.c
  M  Zend/zend_object_handlers.c


Diff:
diff --git a/NEWS b/NEWS
index 1ec60e3..91306ca 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,8 @@ PHP                                                             
           NEWS
 #### ADD NEWS TO 5.3.21 ONLY ####
 
 - Zend Engine:
+  . Fixed bug #63726 (Memleak with static properties and internal/user
+    classes). (Laruence)
   . Fixed bug #63635 (Segfault in gc_collect_cycles). (Dmitry)
   . Fixed bug #63512 (parse_ini_file() with INI_SCANNER_RAW removes quotes 
     from value). (Pierrick)
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index c1b501b..df11bdb 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -3472,6 +3472,8 @@ ZEND_API int zend_update_static_property(zend_class_entry 
*scope, char *name, in
                                (*property)->value = value->value;
                                if (Z_REFCOUNT_P(value) > 0) {
                                        zval_copy_ctor(*property);
+                               } else {
+                                       efree(value);
                                }
                        } else {
                                zval *garbage = *property;
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index eae47d9..c40a458 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -437,6 +437,8 @@ static void zend_std_write_property(zval *object, zval 
*member, zval *value TSRM
                                (*variable_ptr)->value = value->value;
                                if (Z_REFCOUNT_P(value) > 0) {
                                        zval_copy_ctor(*variable_ptr);
+                               } else {
+                                       efree(value);
                                }
                                zval_dtor(&garbage);
                        } else {


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to