mirror of
https://github.com/php/php-src.git
synced 2025-01-20 18:53:37 +08:00
Fix bug #52238: Crash when an Exception occured in iterator_to_array
This commit is contained in:
parent
ef22824315
commit
21d5041c03
@ -3033,7 +3033,9 @@ PHPAPI int spl_iterator_apply(zval *obj, spl_iterator_apply_func_t apply_func, v
|
||||
}
|
||||
|
||||
done:
|
||||
if (iter) {
|
||||
iter->funcs->dtor(iter TSRMLS_CC);
|
||||
}
|
||||
return EG(exception) ? FAILURE : SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
24
ext/spl/tests/bug52238.phpt
Normal file
24
ext/spl/tests/bug52238.phpt
Normal file
@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #52238 - Crash when an Exception occured in iterator_to_array
|
||||
--FILE--
|
||||
<?php
|
||||
class Foo implements IteratorAggregate
|
||||
{
|
||||
public function bar() {
|
||||
throw new Exception;
|
||||
}
|
||||
|
||||
public function getIterator() {
|
||||
return new ArrayIterator($this->bar());
|
||||
}
|
||||
}
|
||||
var_dump(iterator_to_array(new Foo));
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Uncaught exception 'Exception' in %s
|
||||
Stack trace:
|
||||
#0 %s: Foo->bar()
|
||||
#1 [internal function]: Foo->getIterator()
|
||||
#2 %s: iterator_to_array(Object(Foo))
|
||||
#3 {main}
|
||||
thrown in %s on line %d
|
Loading…
Reference in New Issue
Block a user