mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix ClosedGeneratorException possibly thrown into wrong scope
This commit is contained in:
parent
f12fd5c2d3
commit
6046acf93e
3 changed files with 15 additions and 4 deletions
2
NEWS
2
NEWS
|
@ -14,6 +14,8 @@ PHP NEWS
|
|||
. Fixed bug #72024 (microtime() leaks memory). (maroszek at gmx dot net)
|
||||
. Fixed bug #71911 (Unable to set --enable-debug on building extensions by
|
||||
phpize on Windows). (Yuji Uchiyama)
|
||||
. Fixed bug causing ClosedGeneratorException being thrown into the calling
|
||||
code instead of the Generator yielding from. (Bob)
|
||||
|
||||
- COM:
|
||||
. Fixed bug #72569 (DOTNET/COM array parameters broke in PHP7). (Anatol)
|
||||
|
|
|
@ -40,11 +40,10 @@ Stack trace:
|
|||
#2 %s(%d): Generator->next()
|
||||
#3 {main}
|
||||
Generator 1
|
||||
|
||||
Fatal error: Uncaught ClosedGeneratorException: Generator yielded from aborted, no return value available in %s:%d
|
||||
Caught exception!
|
||||
ClosedGeneratorException: Generator yielded from aborted, no return value available in %s:%d
|
||||
Stack trace:
|
||||
#0 [internal function]: gen(Object(Generator))
|
||||
#1 %s(%d): Generator->current()
|
||||
#2 {main}
|
||||
thrown in %s on line %d
|
||||
|
||||
NULL
|
||||
|
|
|
@ -521,6 +521,16 @@ ZEND_API zend_generator *zend_generator_update_current(zend_generator *generator
|
|||
zend_throw_exception(zend_ce_ClosedGeneratorException, "Generator yielded from aborted, no return value available", 0);
|
||||
|
||||
EG(current_execute_data) = original_execute_data;
|
||||
|
||||
if (!((old_root ? old_root : generator)->flags & ZEND_GENERATOR_CURRENTLY_RUNNING)) {
|
||||
leaf->node.ptr.root = root;
|
||||
root->node.parent = NULL;
|
||||
if (old_root) {
|
||||
OBJ_RELEASE(&old_root->std);
|
||||
}
|
||||
zend_generator_resume(leaf);
|
||||
return leaf->node.ptr.root; /* this may be updated during zend_generator_resume! */
|
||||
}
|
||||
} else {
|
||||
zval_ptr_dtor(&root->value);
|
||||
ZVAL_COPY(&root->value, &root->node.parent->value);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue