Skip to content

Commit e746b89

Browse files
committed
Merge branch 'PHP-8.1' into PHP-8.2
2 parents 55e3f73 + b9bca2d commit e746b89

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

Zend/tests/gh9916-012.phpt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Bug GH-9916 012 (Entering shutdown sequence with a fiber suspended in a Generator emits an unavoidable fatal error or crashes)
3+
--FILE--
4+
<?php
5+
6+
$gen = (function() {
7+
yield from (function() { yield; })();
8+
})();
9+
$fiber = new Fiber(function() use ($gen) {
10+
$gen->current();
11+
});
12+
$fiber->start();
13+
14+
?>
15+
==DONE==
16+
--EXPECT--
17+
==DONE==

Zend/zend_generators.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ ZEND_API void zend_generator_resume(zend_generator *orig_generator) /* {{{ */
765765
zend_observer_fcall_end(generator->execute_data, &generator->value);
766766
}
767767
}
768-
generator->flags &= ~ZEND_GENERATOR_CURRENTLY_RUNNING;
768+
generator->flags &= ~(ZEND_GENERATOR_CURRENTLY_RUNNING | ZEND_GENERATOR_IN_FIBER);
769769

770770
generator->frozen_call_stack = NULL;
771771
if (EXPECTED(generator->execute_data) &&
@@ -805,7 +805,6 @@ ZEND_API void zend_generator_resume(zend_generator *orig_generator) /* {{{ */
805805
goto try_again;
806806
}
807807

808-
generator->flags &= ~ZEND_GENERATOR_IN_FIBER;
809808
orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT;
810809
}
811810
/* }}} */

0 commit comments

Comments
 (0)