com php-src: Only backup vm_stack* if generator->stack has not been freed: Zend/zend_generators.c
| From: | Bob Weinand | Date: | Mon, 12 Jan 2015 21:31:07 +0000 |
| Subject: | com php-src: Only backup vm_stack* if generator->stack has not been freed: Zend/zend_generators.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-84075@lists.php.net to get a copy of this message | ||
Commit: 0445974cb1e51135331a31b993487a3b5c594518
Author: Bob Weinand <bobwei9@hotmail.com> Mon, 12 Jan 2015 22:30:38 +0100
Parents: 2387771dafb4f8182d349a855d1b67dea9239ae5
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=0445974cb1e51135331a31b993487a3b5c594518
Log:
Only backup vm_stack* if generator->stack has not been freed
Changed paths:
M Zend/zend_generators.c
Diff:
diff --git a/Zend/zend_generators.c b/Zend/zend_generators..c
index 95a4eb7..3185b79 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -322,13 +322,14 @@ ZEND_API void zend_generator_resume(zend_generator *generator) /* {{{ */
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;