]> granicus.if.org Git - php/commitdiff
Fixed bug with returning from internal function by reference
authorDmitry Stogov <dmitry@php.net>
Thu, 21 Jul 2005 13:48:10 +0000 (13:48 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 21 Jul 2005 13:48:10 +0000 (13:48 +0000)
Zend/zend_vm_def.h

index f0579e637d590aa62be0e0461bfcfe18378dc9af..46b10e2daa50cf58f111b85c00a9f11fde2bb9e8 100644 (file)
@@ -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);
                }