Skip to content

Commit 962a777

Browse files
committed
Merge branch 'PHP-8.2'
* PHP-8.2: Keep consistent EG(current_execute_data) after return from generator (#11380)
2 parents 79d024a + 42619b2 commit 962a777

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

Zend/zend_vm_def.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4584,6 +4584,8 @@ ZEND_VM_HANDLER(161, ZEND_GENERATOR_RETURN, CONST|TMP|VAR|CV, ANY, SPEC(OBSERVER
45844584

45854585
ZEND_OBSERVER_FCALL_END(generator->execute_data, &generator->retval);
45864586

4587+
EG(current_execute_data) = EX(prev_execute_data);
4588+
45874589
/* Close the generator to free up resources */
45884590
zend_generator_close(generator, 1);
45894591

@@ -7986,6 +7988,7 @@ ZEND_VM_HELPER(zend_dispatch_try_catch_finally_helper, ANY, ANY, uint32_t try_ca
79867988
cleanup_live_vars(execute_data, op_num, 0);
79877989
if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
79887990
zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
7991+
EG(current_execute_data) = EX(prev_execute_data);
79897992
zend_generator_close(generator, 1);
79907993
ZEND_VM_RETURN();
79917994
} else {
@@ -8085,6 +8088,7 @@ ZEND_VM_HANDLER(150, ZEND_USER_OPCODE, ANY, ANY)
80858088
case ZEND_USER_OPCODE_RETURN:
80868089
if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
80878090
zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
8091+
EG(current_execute_data) = EX(prev_execute_data);
80888092
zend_generator_close(generator, 1);
80898093
ZEND_VM_RETURN();
80908094
} else {

Zend/zend_vm_execute.h

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)