diff options
author | Bob Weinand <bobwei9@hotmail.com> | 2015-01-12 22:30:38 +0100 |
---|---|---|
committer | Bob Weinand <bobwei9@hotmail.com> | 2015-01-12 22:31:07 +0100 |
commit | 0445974cb1e51135331a31b993487a3b5c594518 (patch) | |
tree | 695c6e277d85a093de8287ac262a01f93e47d3b4 | |
parent | 2387771dafb4f8182d349a855d1b67dea9239ae5 (diff) | |
download | php-git-0445974cb1e51135331a31b993487a3b5c594518.tar.gz |
Only backup vm_stack* if generator->stack has not been freed
-rw-r--r-- | Zend/zend_generators.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 95a4eb74fd..3185b79079 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; |