summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2003-07-27 12:03:54 +0000
committerStanislav Malyshev <stas@php.net>2003-07-27 12:03:54 +0000
commit5724c7a66c49ba7f42f3f2b91f3196977f016ac0 (patch)
tree4de9766d7ca394f094974869d7af6b45728d98d9 /Zend/zend_compile.c
parent78f8ca6e5564dc1335b2019c2518dab38cdb78ea (diff)
downloadphp-git-5724c7a66c49ba7f42f3f2b91f3196977f016ac0.tar.gz
fix leaks with class constants (bug #24699)
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 1c9f1f8314..8d1aa3d945 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -2513,6 +2513,7 @@ void zend_do_fold_constant(znode *result, znode *constant_name TSRMLS_DC)
if (zend_hash_find(&CG(active_class_entry)->constants_table, constant_name->u.constant.value.str.val,
constant_name->u.constant.value.str.len+1, (void **) &zresult) != SUCCESS) {
if (zend_get_constant(constant_name->u.constant.value.str.val, constant_name->u.constant.value.str.len, &result->u.constant TSRMLS_CC)) {
+ zval_dtor(&constant_name->u.constant);
return;
} else {
zend_error(E_COMPILE_ERROR, "Cannot find %s constant in class %s\n",
@@ -2522,6 +2523,7 @@ void zend_do_fold_constant(znode *result, znode *constant_name TSRMLS_DC)
result->u.constant = **zresult;
zval_copy_ctor(&result->u.constant);
+ zval_dtor(&constant_name->u.constant);
}
void zend_do_fetch_constant(znode *result, znode *constant_container, znode *constant_name, int mode TSRMLS_DC)