Skip to content

Commit 039f0fe

Browse files
authored
Destroy previous fiber context in trampoline as needed (#7143)
1 parent 7df3fd9 commit 039f0fe

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

Zend/zend_fibers.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,11 @@ static ZEND_NORETURN void zend_fiber_trampoline(boost_context_data data)
218218
/* Initialize transfer struct with a copy of passed data. */
219219
zend_fiber_transfer transfer = *data.transfer;
220220

221+
/* Ensure that previous fiber will be cleaned up (needed by symmetric coroutines). */
222+
if (from->status == ZEND_FIBER_STATUS_DEAD) {
223+
zend_fiber_destroy_context(from);
224+
}
225+
221226
zend_fiber_context *context = EG(current_fiber_context);
222227

223228
context->function(&transfer);

0 commit comments

Comments
 (0)