zend_execute_ex(generator->execute_data);
generator->flags &= ~ZEND_GENERATOR_CURRENTLY_RUNNING;
- /* Unlink generator call_frame from the caller */
+ /* Unlink generator call_frame from the caller and backup vm_stack_top */
if (generator->execute_data) {
+ generator->stack = EG(vm_stack);
+ generator->stack->top = EG(vm_stack_top);
generator->execute_data->prev_execute_data = NULL;
}
/* Restore executor globals */
- generator->stack->top = EG(vm_stack_top);
EG(current_execute_data) = original_execute_data;
EG(scope) = original_scope;
EG(vm_stack_top) = original_stack->top;