diff --git a/Zend/tests/generators/bug75396.phpt b/Zend/tests/generators/bug75396.phpt new file mode 100644 index 00000000000..6d5abf518f0 --- /dev/null +++ b/Zend/tests/generators/bug75396.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #75396: Exit inside generator finally results in fatal error +--FILE-- +send("x"); + +?> +--EXPECT-- +Try +Exit diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index f96bd355cee..2136baae64e 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -186,7 +186,8 @@ static void zend_generator_dtor_storage(zend_object *object) /* {{{ */ generator->node.parent = NULL; } - if (EXPECTED(!ex) || EXPECTED(!(ex->func->op_array.fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK))) { + if (EXPECTED(!ex) || EXPECTED(!(ex->func->op_array.fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK)) + || CG(unclean_shutdown)) { return; }