summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-01-22 15:49:38 +0300
committerDmitry Stogov <dmitry@zend.com>2015-01-22 15:49:38 +0300
commitfaf917d94e6f4f2d56020a422c981a48bd724cf1 (patch)
tree63c77825a8bb7f50fb69a3a2dba6ab6d77f24256
parent0b70f588221ec41779382928327fcfd3256ca13c (diff)
downloadphp-git-faf917d94e6f4f2d56020a422c981a48bd724cf1.tar.gz
define() must not modify the source array
-rw-r--r--Zend/tests/constant_arrays.phpt2
-rw-r--r--Zend/zend_builtin_functions.c9
2 files changed, 2 insertions, 9 deletions
diff --git a/Zend/tests/constant_arrays.phpt b/Zend/tests/constant_arrays.phpt
index 834c12606e..5bb8717604 100644
--- a/Zend/tests/constant_arrays.phpt
+++ b/Zend/tests/constant_arrays.phpt
@@ -85,7 +85,7 @@ array(4) {
int(3)
array(1) {
[0]=>
- int(3)
+ &int(3)
}
array(1) {
[0]=>
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 6b73bf344d..f5dd831cd4 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -746,14 +746,7 @@ static void copy_constant_array(zval *dst, zval *src) /* {{{ */
array_init_size(dst, zend_hash_num_elements(Z_ARRVAL_P(src)));
ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(src), idx, key, val) {
/* constant arrays can't contain references */
- if (Z_ISREF_P(val)) {
- if (Z_REFCOUNT_P(val) == 1) {
- ZVAL_UNREF(val);
- } else {
- Z_DELREF_P(val);
- val = Z_REFVAL_P(val);
- }
- }
+ ZVAL_DEREF(val);
if (key) {
new_val = zend_hash_add_new(Z_ARRVAL_P(dst), key, val);
} else {