]> granicus.if.org Git - php/commitdiff
Revert "Refix bug #73686"
authorXinchen Hui <laruence@gmail.com>
Fri, 9 Dec 2016 14:22:59 +0000 (22:22 +0800)
committerXinchen Hui <laruence@gmail.com>
Fri, 9 Dec 2016 14:22:59 +0000 (22:22 +0800)
This reverts commit 4589386026dbf15d980ba0c7c92dc587cead15e8.

Zend/zend_execute.c
ext/spl/spl_array.c

index 621fae74a3f3a36d2784cc64fc5b1f297b3ca3ea..647428f9592fa08da39c98a463bc343fa3fb0607 100644 (file)
@@ -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);
 }
 
index bddf64ee57e59148ded8e559fcc32070e142deb1..d3fbb95991262ea9b8bd38423c44bbf50fc24e3b 100644 (file)
@@ -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);
        }