summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2012-12-10 20:28:27 +0800
committerXinchen Hui <laruence@php.net>2012-12-10 20:28:27 +0800
commitad553a7af237818f5d7690e97a03ffe66ec9ab37 (patch)
tree4ffc7d49c648941f20b2c7139177e2303fc18717
parentdb6d8e27247429746985cf1c424e73728449922f (diff)
downloadphp-git-ad553a7af237818f5d7690e97a03ffe66ec9ab37.tar.gz
Fixed bug #63726 (Memleak with static properties and internal/user classes)
-rw-r--r--NEWS2
-rw-r--r--Zend/zend_API.c2
-rw-r--r--Zend/zend_object_handlers.c2
3 files changed, 6 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 1ec60e3dfe..91306ca238 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 c1b501b0b7..df11bdbe8f 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 eae47d9c5a..c40a458238 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 {