mirror of
https://github.com/php/php-src.git
synced 2025-08-20 09:24:05 +02:00
Merge branch 'PHP-7.2'
This commit is contained in:
commit
80881194a1
3 changed files with 23 additions and 19 deletions
|
@ -3366,7 +3366,7 @@ SPL_METHOD(AppendIterator, __construct)
|
||||||
Append an iterator */
|
Append an iterator */
|
||||||
SPL_METHOD(AppendIterator, append)
|
SPL_METHOD(AppendIterator, append)
|
||||||
{
|
{
|
||||||
spl_dual_it_object *intern, *appender;
|
spl_dual_it_object *intern;
|
||||||
zval *it;
|
zval *it;
|
||||||
|
|
||||||
SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
|
SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
|
||||||
|
@ -3378,11 +3378,6 @@ SPL_METHOD(AppendIterator, append)
|
||||||
spl_array_iterator_append(&intern->u.append.zarrayit, it);
|
spl_array_iterator_append(&intern->u.append.zarrayit, it);
|
||||||
intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator);
|
intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator);
|
||||||
}else{
|
}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);
|
spl_array_iterator_append(&intern->u.append.zarrayit, it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
|
||||||
}
|
|
||||||
|
|
22
ext/spl/tests/bug75155.phpt
Normal file
22
ext/spl/tests/bug75155.phpt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
--TEST--
|
||||||
|
Bug #75155: AppendIterator::append() is broken when appending another AppendIterator
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$array_a = new ArrayIterator(array('a', 'b', 'c'));
|
||||||
|
$array_b = new ArrayIterator(array('d', 'e', 'f'));
|
||||||
|
|
||||||
|
$iterator = new AppendIterator;
|
||||||
|
$iterator->append($array_a);
|
||||||
|
|
||||||
|
$iterator2 = new AppendIterator;
|
||||||
|
$iterator2->append($iterator);
|
||||||
|
$iterator2->append($array_b);
|
||||||
|
|
||||||
|
foreach ($iterator2 as $current) {
|
||||||
|
echo $current;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
abcdef
|
Loading…
Add table
Add a link
Reference in a new issue