summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2016-12-09 22:22:59 +0800
committerXinchen Hui <laruence@gmail.com>2016-12-09 22:22:59 +0800
commit6812721ef2c52ca7f518c6664a1933ffb58b3715 (patch)
tree1dafb472fa05f37a56f9c8a327efd80303bef27c
parent4589386026dbf15d980ba0c7c92dc587cead15e8 (diff)
downloadphp-git-6812721ef2c52ca7f518c6664a1933ffb58b3715.tar.gz
Revert "Refix bug #73686"
This reverts commit 4589386026dbf15d980ba0c7c92dc587cead15e8.
-rw-r--r--Zend/zend_execute.c4
-rw-r--r--ext/spl/spl_array.c5
2 files changed, 5 insertions, 4 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 621fae74a3..647428f959 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1094,10 +1094,6 @@ static zend_never_inline void zend_assign_to_object_dim(zval *object, zval *dim,
return;
}
- if (UNEXPECTED(Z_ISREF_P(value))) {
- value = Z_REFVAL_P(value);
- }
-
Z_OBJ_HT_P(object)->write_dimension(object, dim, value);
}
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c
index bddf64ee57..d3fbb95991 100644
--- a/ext/spl/spl_array.c
+++ b/ext/spl/spl_array.c
@@ -473,6 +473,11 @@ static void spl_array_write_dimension_ex(int check_inherited, zval *object, zval
return;
}
+ if (UNEXPECTED(Z_ISREF_P(value) &&
+ Z_REFCOUNTED_P(value) == 1)) {
+ ZVAL_UNREF(value);
+ }
+
if (Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
}