Skip to content

Commit 86e1fea

Browse files
committed
Restore extra_named_params when restoring frozen call stack
1 parent e440e37 commit 86e1fea

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

Zend/tests/generators/gh9752.phpt

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
--TEST--
2+
Bug GH-9752 (Generator crashes when interrupted during a function call with extra named params)
3+
--FILE--
4+
<?php
5+
6+
function f(...$x) {
7+
}
8+
9+
function g() {
10+
f(a: 1, b: yield);
11+
};
12+
13+
$gen = g();
14+
15+
foreach ($gen as $value) {
16+
break;
17+
}
18+
19+
?>
20+
==DONE==
21+
--EXPECT--
22+
==DONE==

Zend/zend_generators.c

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ ZEND_API void zend_generator_restore_call_stack(zend_generator *generator) /* {{
4444
ZEND_CALL_NUM_ARGS(call),
4545
Z_PTR(call->This));
4646
memcpy(((zval*)new_call) + ZEND_CALL_FRAME_SLOT, ((zval*)call) + ZEND_CALL_FRAME_SLOT, ZEND_CALL_NUM_ARGS(call) * sizeof(zval));
47+
new_call->extra_named_params = call->extra_named_params;
4748
new_call->prev_execute_data = prev_call;
4849
prev_call = new_call;
4950

0 commit comments

Comments
 (0)