Skip to content

Commit 1679235

Browse files
committed
Merge branch 'PHP-8.2'
2 parents ea37abd + e746b89 commit 1679235

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
@@ -761,7 +761,7 @@ ZEND_API void zend_generator_resume(zend_generator *orig_generator) /* {{{ */
761761
zend_observer_fcall_end(generator->execute_data, &generator->value);
762762
}
763763
}
764-
generator->flags &= ~ZEND_GENERATOR_CURRENTLY_RUNNING;
764+
generator->flags &= ~(ZEND_GENERATOR_CURRENTLY_RUNNING | ZEND_GENERATOR_IN_FIBER);
765765

766766
generator->frozen_call_stack = NULL;
767767
if (EXPECTED(generator->execute_data) &&
@@ -801,7 +801,6 @@ ZEND_API void zend_generator_resume(zend_generator *orig_generator) /* {{{ */
801801
goto try_again;
802802
}
803803

804-
generator->flags &= ~ZEND_GENERATOR_IN_FIBER;
805804
orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT;
806805
}
807806
/* }}} */

0 commit comments

Comments
 (0)