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

index 10ecf940a64c72cc7cb5695aa51a13f0da08719b..11a50e70f296e8acfde33ccddec1561715515919 100644 (file)
@@ -1852,6 +1852,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 f15b806a7f82391ee52fba8b2059fdf9223be265..fe5b2591be303841046ef011735461c1f7aeb582 100644 (file)
@@ -197,6 +197,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;