summaryrefslogtreecommitdiff
path: root/Zend/zend_generators.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_generators.c')
-rw-r--r--Zend/zend_generators.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
index 706d913f72..13304e9fdd 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -176,8 +176,10 @@ static void zend_generator_dtor_storage(zend_object *object) /* {{{ */
if (finally_op_num) {
zval *fast_call = ZEND_CALL_VAR(ex, ex->func->op_array.opcodes[finally_op_end].op1.var);
- Z_OBJ_P(fast_call) = NULL;
+ Z_OBJ_P(fast_call) = EG(exception);
+ EG(exception) = NULL;
fast_call->u2.lineno = (uint32_t)-1;
+
ex->opline = &ex->func->op_array.opcodes[finally_op_num];
generator->flags |= ZEND_GENERATOR_FORCED_CLOSE;
zend_generator_resume(generator);