diff options
Diffstat (limited to 'Zend/zend_vm_def.h')
| -rw-r--r-- | Zend/zend_vm_def.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 9dc7e0842c..13ae824c48 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -5197,9 +5197,17 @@ ZEND_VM_HANDLER(156, ZEND_SEPARATE, VAR, UNUSED) ZEND_VM_HANDLER(159, ZEND_SUSPEND_AND_RETURN_GENERATOR, ANY, ANY) { - /* do nothing for now */ + if (EG(return_value_ptr_ptr)) { + zval *return_value; - ZEND_VM_NEXT_OPCODE(); + ALLOC_INIT_ZVAL(return_value); + object_init_ex(return_value, zend_ce_generator); + + *EG(return_value_ptr_ptr) = return_value; + } + + /* for now we just do a normal return without suspension */ + ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper); } ZEND_VM_EXPORT_HELPER(zend_do_fcall, zend_do_fcall_common_helper) |
