From 19dc0411f7338abdb50e3e378920de4c2087f1f6 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 24 Aug 2005 10:41:06 +0000 Subject: [PATCH] Fixed return-by-reference from internal functions --- Zend/zend_vm_def.h | 2 ++ Zend/zend_vm_execute.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 10ecf940a6..11a50e70f2 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -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; diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index f15b806a7f..fe5b2591be 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -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; -- 2.50.1