From: Dmitry Stogov Date: Thu, 21 Jul 2005 13:48:10 +0000 (+0000) Subject: Fixed bug with returning from internal function by reference X-Git-Tag: RELEASE_0_9~44 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6b5f4da085d03dd585f373ec33df907581b0969f;p=php Fixed bug with returning from internal function by reference --- diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index f0579e637d..46b10e2daa 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1838,8 +1838,10 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY) } EG(current_execute_data) = EXECUTE_DATA; - EX_T(opline->result.u.var).var.ptr->is_ref = 0; - EX_T(opline->result.u.var).var.ptr->refcount = 1; + if (!EX(function_state).function->common.return_reference) { + EX_T(opline->result.u.var).var.ptr->is_ref = 0; + EX_T(opline->result.u.var).var.ptr->refcount = 1; + } if (!return_value_used) { zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr); }