jhdxr
9 years ago
committed by
Joe Watkins
No known key found for this signature in database
GPG Key ID: F9BA0ADA31CBD89E
3 changed files with
24 additions and
1 deletions
-
NEWS
-
ext/spl/spl_iterators.c
-
ext/spl/tests/bug73471.phpt
|
|
|
@ -6,6 +6,9 @@ PHP NEWS |
|
|
|
. Fixed bug #74780 (parse_url() borken when query string contains colon). |
|
|
|
(jhdxr) |
|
|
|
|
|
|
|
- SPL: |
|
|
|
. Fixed bug #73471 (PHP freezes with AppendIterator). (jhdxr) |
|
|
|
|
|
|
|
06 Jul 2017 PHP 7.0.21 |
|
|
|
|
|
|
|
- Core: |
|
|
|
|
|
|
|
@ -3383,7 +3383,12 @@ SPL_METHOD(AppendIterator, append) |
|
|
|
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "O", &it, zend_ce_iterator) == FAILURE) { |
|
|
|
return; |
|
|
|
} |
|
|
|
spl_array_iterator_append(&intern->u.append.zarrayit, it); |
|
|
|
if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS) { |
|
|
|
spl_array_iterator_append(&intern->u.append.zarrayit, it); |
|
|
|
intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); |
|
|
|
}else{ |
|
|
|
spl_array_iterator_append(&intern->u.append.zarrayit, it); |
|
|
|
} |
|
|
|
|
|
|
|
if (!intern->inner.iterator || spl_dual_it_valid(intern) != SUCCESS) { |
|
|
|
if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) != SUCCESS) { |
|
|
|
|
|
|
|
@ -0,0 +1,15 @@ |
|
|
|
--TEST-- |
|
|
|
Bug #73471 PHP freezes with AppendIterator |
|
|
|
--FILE-- |
|
|
|
<?php |
|
|
|
|
|
|
|
$iterator = new \AppendIterator(); |
|
|
|
$events = new \ArrayIterator([1,2,3,4,5]); |
|
|
|
$events2 = new \ArrayIterator(['a', 'b', 'c']); |
|
|
|
$iterator->append($events); |
|
|
|
foreach($events as $event){} |
|
|
|
$iterator->append($events2); |
|
|
|
?> |
|
|
|
===DONE=== |
|
|
|
--EXPECT-- |
|
|
|
===DONE=== |