summaryrefslogtreecommitdiff
path: root/Zend/zend_variables.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-02-18 16:27:38 +0400
committerDmitry Stogov <dmitry@zend.com>2014-02-18 16:27:38 +0400
commit5de7115679522dec2f4725104c6f8c6e4a7bd8e4 (patch)
tree4c3ec266ea19dec3ca82e348c1e73483d1899715 /Zend/zend_variables.c
parent1c4f3d39a805323dc60f2bc1bfc96e39d608ac37 (diff)
downloadphp-git-5de7115679522dec2f4725104c6f8c6e4a7bd8e4.tar.gz
Use better data structures (incomplete; able to run bench.php)
Diffstat (limited to 'Zend/zend_variables.c')
-rw-r--r--Zend/zend_variables.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c
index b9fc79ff35..90415ba47e 100644
--- a/Zend/zend_variables.c
+++ b/Zend/zend_variables.c
@@ -68,6 +68,12 @@ ZEND_API void _zval_dtor_func(zval *zvalue ZEND_FILE_LINE_DC)
}
}
break;
+ case IS_REFERENCE:
+ if (Z_DELREF_P(zvalue) == 0) {
+ zval_dtor(Z_REFVAL_P(zvalue));
+ efree(Z_REF_P(zvalue));
+ }
+ break;
case IS_LONG:
case IS_DOUBLE:
case IS_BOOL:
@@ -117,6 +123,10 @@ ZEND_API void _zval_dtor_func_for_ptr(zval *zvalue ZEND_FILE_LINE_DC)
zend_list_delete(Z_RES_P(zvalue));
}
break;
+ case IS_REFERENCE:
+ zval_dtor(Z_REFVAL_P(zvalue));
+ efree(Z_REF_P(zvalue));
+ break;
case IS_LONG:
case IS_DOUBLE:
case IS_BOOL: