diff --git a/Zend/tests/gh9916-012.phpt b/Zend/tests/gh9916-012.phpt new file mode 100644 index 00000000000..cd31ea1215b --- /dev/null +++ b/Zend/tests/gh9916-012.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug GH-9916 012 (Entering shutdown sequence with a fiber suspended in a Generator emits an unavoidable fatal error or crashes) +--FILE-- +current(); +}); +$fiber->start(); + +?> +==DONE== +--EXPECT-- +==DONE== diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 24316dc4e89..65feafc1b69 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -747,7 +747,7 @@ try_again: zend_observer_fcall_end(generator->execute_data, &generator->value); } } - generator->flags &= ~ZEND_GENERATOR_CURRENTLY_RUNNING; + generator->flags &= ~(ZEND_GENERATOR_CURRENTLY_RUNNING | ZEND_GENERATOR_IN_FIBER); generator->frozen_call_stack = NULL; if (EXPECTED(generator->execute_data) && @@ -787,7 +787,6 @@ try_again: goto try_again; } - generator->flags &= ~ZEND_GENERATOR_IN_FIBER; orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT; } /* }}} */