]> granicus.if.org Git - php/commitdiff
Fix ArrayObject with immutable array
authorNikita Popov <nikic@php.net>
Thu, 29 May 2014 19:19:49 +0000 (21:19 +0200)
committerNikita Popov <nikic@php.net>
Thu, 29 May 2014 19:19:49 +0000 (21:19 +0200)
ext/spl/spl_array.c

index 2fa7a53dd3b286844bf6e09e728b4792679bad4a..9420990d6c1cb4fe5997629c65c5f63eb2b8ee84 100644 (file)
@@ -1146,6 +1146,9 @@ static void spl_array_set_array(zval *object, spl_array_object *intern, zval *ar
        if (Z_TYPE_P(array) == IS_ARRAY) {
                SEPARATE_ZVAL_IF_NOT_REF(array);
        }
+       if (Z_IMMUTABLE_P(array)) {
+               zval_copy_ctor(array);
+       }
 
        if (Z_TYPE_P(array) == IS_OBJECT && (Z_OBJ_HT_P(array) == &spl_handler_ArrayObject || Z_OBJ_HT_P(array) == &spl_handler_ArrayIterator)) {
                zval_ptr_dtor(&intern->array);