diff options
| author | Nikita Popov <nikic@php.net> | 2012-09-22 19:12:21 +0200 |
|---|---|---|
| committer | Nikita Popov <nikic@php.net> | 2012-09-22 19:15:53 +0200 |
| commit | a31fa55b44bcb342c00e9ab2f4a851d054897a39 (patch) | |
| tree | c1dfe040f3d51b7ab97d16094772d0b24e170f3f /Zend/zend_generators.h | |
| parent | 6c135dff975f111ec5a84af93c1b98e9ae84fcd1 (diff) | |
| download | php-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.h | 5 |
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; |
