summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>1999-11-19 17:04:54 +0000
committerAndi Gutmans <andi@php.net>1999-11-19 17:04:54 +0000
commit1f11e07fc692e64991ffc8a009f2270db56cb246 (patch)
treef4c0a085b2d43dcbe2cc639853c9130b6ce55c3a
parent817a11e7edf459116a180a3051349a845666969e (diff)
downloadphp-git-1f11e07fc692e64991ffc8a009f2270db56cb246.tar.gz
- Moved var_uninit() for return_value to the beginning of DO_FCALL.
We forgot to do it for overloaded methods
-rw-r--r--Zend/zend_execute.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 2256b1bf37..39bff9225a 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1467,8 +1467,8 @@ do_fcall_common:
int return_value_not_used = (opline->result.u.EA.type & EXT_TYPE_UNUSED);
zend_ptr_stack_push(&EG(argument_stack), (void *) opline->extended_value);
+ var_uninit(&Ts[opline->result.u.var].tmp_var);
if (function_state.function->type==ZEND_INTERNAL_FUNCTION) {
- var_uninit(&Ts[opline->result.u.var].tmp_var);
((zend_internal_function *) function_state.function)->handler(opline->extended_value, &Ts[opline->result.u.var].tmp_var, &EG(regular_list), &EG(persistent_list), object.ptr, !return_value_not_used);
if (object.ptr) {
object.ptr->refcount--;
@@ -1500,7 +1500,6 @@ do_fcall_common:
}
original_return_value = EG(return_value);
EG(return_value) = &Ts[opline->result.u.var].tmp_var;
- var_uninit(EG(return_value));
EG(active_op_array) = (zend_op_array *) function_state.function;
zend_execute(EG(active_op_array) ELS_CC);
EG(opline_ptr) = &opline;