summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-08-24 10:41:06 +0000
committerDmitry Stogov <dmitry@php.net>2005-08-24 10:41:06 +0000
commit19dc0411f7338abdb50e3e378920de4c2087f1f6 (patch)
tree2fcbecd170bce8119e2b5f28d86c7d365ed0b8e3
parent9e0ed1cb672dc6a2f84eaf8d91695da83aed13ea (diff)
downloadphp-git-19dc0411f7338abdb50e3e378920de4c2087f1f6.tar.gz
Fixed return-by-reference from internal functions
-rw-r--r--Zend/zend_vm_def.h2
-rw-r--r--Zend/zend_vm_execute.h2
2 files changed, 4 insertions, 0 deletions
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;