]> granicus.if.org Git - php/commitdiff
Use USE_OTHER for ArrayIterator cloning
authorNikita Popov <nikic@php.net>
Mon, 22 Feb 2016 11:19:03 +0000 (12:19 +0100)
committerNikita Popov <nikic@php.net>
Mon, 22 Feb 2016 11:35:00 +0000 (12:35 +0100)
intern->array should never be an array with refcount 2.

ext/spl/spl_array.c

index 67d2ccb67c59c6a46bdfa3f28f710d253e7d5582..83c1f288ff34bd3e53eed0df5d91c3beb3f48d68 100644 (file)
@@ -170,7 +170,8 @@ static zend_object *spl_array_object_new_ex(zend_class_entry *class_type, zval *
                                ZVAL_ARR(&intern->array, zend_array_dup(HASH_OF(&other->array)));
                        } else {
                                ZEND_ASSERT(Z_OBJ_HT_P(orig) == &spl_handler_ArrayIterator);
-                               ZVAL_COPY(&intern->array, &other->array);
+                               ZVAL_COPY(&intern->array, orig);
+                               intern->ar_flags |= SPL_ARRAY_USE_OTHER;
                        }
                } else {
                        ZVAL_COPY(&intern->array, orig);