summaryrefslogtreecommitdiff
path: root/Zend/zend_constants.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-05-29 18:21:56 +0400
committerDmitry Stogov <dmitry@zend.com>2014-05-29 18:21:56 +0400
commitb3b616cf7ee0702aca2f6fdb022dc7e28e015a22 (patch)
tree933686808b06b0408b0207f6fa2afe9111b866f9 /Zend/zend_constants.c
parentbfff679d903c7ef1648d3d009f42566baa7d6232 (diff)
downloadphp-git-b3b616cf7ee0702aca2f6fdb022dc7e28e015a22.tar.gz
Introduced immutable arrays. They don't need to be copyed and may be used directly from SHM.
Diffstat (limited to 'Zend/zend_constants.c')
-rw-r--r--Zend/zend_constants.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c
index 4f2cedb9af..4930d1fdd4 100644
--- a/Zend/zend_constants.c
+++ b/Zend/zend_constants.c
@@ -32,7 +32,9 @@ void free_zend_constant(zval *zv)
zend_constant *c = Z_PTR_P(zv);
if (!(c->flags & CONST_PERSISTENT)) {
- zval_dtor(&c->value);
+ if (Z_REFCOUNTED(c->value) || Z_IMMUTABLE(c->value)) {
+ _zval_dtor_func(Z_COUNTED(c->value) ZEND_FILE_LINE_CC);
+ }
} else {
zval_internal_dtor(&c->value);
}