From b689857d53177b6027679f67fecbde8f36c174d1 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Mon, 4 Sep 2017 21:20:49 +0200 Subject: [PATCH 1/2] Revert "Fixed #74977 - Appending AppendIterator leads to segfault" This reverts commit dbc2ffba822d13e74e37f5ba6e106f163c1008e8. --- ext/spl/spl_iterators.c | 7 +------ ext/spl/tests/bug74977.phpt | 13 ------------- 2 files changed, 1 insertion(+), 19 deletions(-) delete mode 100644 ext/spl/tests/bug74977.phpt diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index 0daa55f4b44..4373a3b6518 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -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 index 09e16eedfe4..00000000000 --- a/ext/spl/tests/bug74977.phpt +++ /dev/null @@ -1,13 +0,0 @@ ---TEST-- -Bug #74977: Recursion leads to crash ---FILE-- -append($iterator); -var_dump($iterator); -?> ---EXPECTF-- -object(AppendIterator)#1 (0) { -} - From c2e3541cc1200f38f72deccac66d889888e3949d Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Mon, 4 Sep 2017 21:23:07 +0200 Subject: [PATCH 2/2] Add test for bug #75155 --- NEWS | 4 ++++ ext/spl/tests/bug75155.phpt | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 ext/spl/tests/bug75155.phpt diff --git a/NEWS b/NEWS index 8103b9445e4..3803c649048 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,10 @@ PHP NEWS . Fixed bug #74631 (PDO_PCO with PHP-FPM: OCI environment initialized before PHP-FPM sets it up). (Ingmar Runge) +- SPL: + . Fixed bug #75155 (AppendIterator::append() is broken when appending another + AppendIterator). (Nikita) + - Standard: . Fixed bug #75097 (gethostname fails if your host name is 64 chars long). (Andrea) diff --git a/ext/spl/tests/bug75155.phpt b/ext/spl/tests/bug75155.phpt new file mode 100644 index 00000000000..0d0c0753e09 --- /dev/null +++ b/ext/spl/tests/bug75155.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #75155: AppendIterator::append() is broken when appending another AppendIterator +--FILE-- +append($array_a); + +$iterator2 = new AppendIterator; +$iterator2->append($iterator); +$iterator2->append($array_b); + +foreach ($iterator2 as $current) { + echo $current; +} + +?> +--EXPECT-- +abcdef