]> granicus.if.org Git - php/commitdiff
Revert "Fixed #74977 - Appending AppendIterator leads to segfault"
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 4 Sep 2017 19:20:49 +0000 (21:20 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 4 Sep 2017 19:20:49 +0000 (21:20 +0200)
This reverts commit dbc2ffba822d13e74e37f5ba6e106f163c1008e8.

ext/spl/spl_iterators.c
ext/spl/tests/bug74977.phpt [deleted file]

index 0daa55f4b4413fe7d2f93fdd79d2924a2b7f44b8..4373a3b651877dd4cb2695d244e8e5deffd85455 100644 (file)
@@ -3367,7 +3367,7 @@ SPL_METHOD(AppendIterator, __construct)
    Append an iterator */
 SPL_METHOD(AppendIterator, append)
 {
-       spl_dual_it_object   *intern, *appender;
+       spl_dual_it_object   *intern;
        zval *it;
 
        SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
@@ -3379,11 +3379,6 @@ SPL_METHOD(AppendIterator, append)
                spl_array_iterator_append(&intern->u.append.zarrayit, it);
                intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator);
        }else{
-               appender = Z_SPLDUAL_IT_P(it);
-               if (appender->dit_type == DIT_AppendIterator) {
-                       spl_array_iterator_append(&intern->u.append.zarrayit, &appender->u.append.zarrayit);
-                       return;
-               }
                spl_array_iterator_append(&intern->u.append.zarrayit, it);
        }
 
diff --git a/ext/spl/tests/bug74977.phpt b/ext/spl/tests/bug74977.phpt
deleted file mode 100644 (file)
index 09e16ee..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-Bug #74977:    Recursion leads to crash
---FILE--
-<?php
-
-$iterator = new AppendIterator(array("A","A","A"));
-$iterator->append($iterator);
-var_dump($iterator);
-?>
---EXPECTF--
-object(AppendIterator)#1 (0) {
-}
-