summaryrefslogtreecommitdiff
path: root/Zend/zend_generators.h
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2012-09-22 19:12:21 +0200
committerNikita Popov <nikic@php.net>2012-09-22 19:15:53 +0200
commita31fa55b44bcb342c00e9ab2f4a851d054897a39 (patch)
treec1dfe040f3d51b7ab97d16094772d0b24e170f3f /Zend/zend_generators.h
parent6c135dff975f111ec5a84af93c1b98e9ae84fcd1 (diff)
downloadphp-git-a31fa55b44bcb342c00e9ab2f4a851d054897a39.tar.gz
Fixed bug #63132
EG(arg_types_stack) is now also backed up when generators are used. This allows the use of yield in nested method calls. This commit adds two new functions to the zend_ptr_stack API: zend_ptr_stack_push_from_memory zend_ptr_stack_pop_into_memory both taking the following arguments: zend_ptr_stack *stack, int count, void **pointers
Diffstat (limited to 'Zend/zend_generators.h')
-rw-r--r--Zend/zend_generators.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/Zend/zend_generators.h b/Zend/zend_generators.h
index e47b7ad885..3dc3e6fecd 100644
--- a/Zend/zend_generators.h
+++ b/Zend/zend_generators.h
@@ -36,6 +36,11 @@ typedef struct _zend_generator {
void *backed_up_stack;
size_t backed_up_stack_size;
+ /* For method calls PHP also pushes various type information on a second
+ * stack, which also needs to be backed up. */
+ void **backed_up_arg_types_stack;
+ int backed_up_arg_types_stack_count;
+
/* The original stack top before resuming the generator. This is required
* for proper cleanup during exception handling. */
void **original_stack_top;