]> granicus.if.org Git - php/commitdiff
Fixed return-by-reference from internal functions
authorDmitry Stogov <dmitry@php.net>
Wed, 24 Aug 2005 10:41:51 +0000 (10:41 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 24 Aug 2005 10:41:51 +0000 (10:41 +0000)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 51d2a108dc2bc927988cd418620be8b2c530227e..81362d5f6725eaf07f82a113195fc7cd8ac6408d 100644 (file)
@@ -1885,6 +1885,8 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY)
 */
                if (!return_value_used) {
                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
+               } else {
+                       EX_T(opline->result.u.var).var.fcall_returned_reference = EX(function_state).function->common.return_reference;
                }
        } else if (EX(function_state).function->type == ZEND_USER_FUNCTION) {
                HashTable *calling_symbol_table;
index 41bc307c3eeee24dc8fb57f6647599a2168be04a..4db7b67aa8bce1c6c32c1cfb05961565227a927b 100644 (file)
@@ -206,6 +206,8 @@ static int zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
 */
                if (!return_value_used) {
                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
+               } else {
+                       EX_T(opline->result.u.var).var.fcall_returned_reference = EX(function_state).function->common.return_reference;
                }
        } else if (EX(function_state).function->type == ZEND_USER_FUNCTION) {
                HashTable *calling_symbol_table;