diff options
-rw-r--r-- | Zend/zend_vm_def.h | 13 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 13 |
2 files changed, 12 insertions, 14 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 964a4995f3..e7f8300d28 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2744,6 +2744,7 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY) zend_execute_data *call = EX(call); zend_function *fbc = call->func; zend_object *object = Z_OBJ(call->This); + zval *ret; SAVE_OPLINE(); EX(call) = call->prev_execute_data; @@ -2843,18 +2844,16 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY) zend_vm_stack_free_call_frame(call); } else { - zval *return_value = NULL; - + ret = NULL; call->symbol_table = NULL; if (RETURN_VALUE_USED(opline)) { - return_value = EX_VAR(opline->result.var); - - ZVAL_NULL(return_value); - Z_VAR_FLAGS_P(return_value) = 0; + ret = EX_VAR(opline->result.var); + ZVAL_NULL(ret); + Z_VAR_FLAGS_P(ret) = 0; } call->prev_execute_data = execute_data; - i_init_func_execute_data(call, &fbc->op_array, return_value); + i_init_func_execute_data(call, &fbc->op_array, ret); if (EXPECTED(zend_execute_ex == execute_ex)) { ZEND_VM_ENTER(); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 435eaf3bb4..7cb915fa7d 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -492,6 +492,7 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_execute_data *call = EX(call); zend_function *fbc = call->func; zend_object *object = Z_OBJ(call->This); + zval *ret; SAVE_OPLINE(); EX(call) = call->prev_execute_data; @@ -591,18 +592,16 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_vm_stack_free_call_frame(call); } else { - zval *return_value = NULL; - + ret = NULL; call->symbol_table = NULL; if (RETURN_VALUE_USED(opline)) { - return_value = EX_VAR(opline->result.var); - - ZVAL_NULL(return_value); - Z_VAR_FLAGS_P(return_value) = 0; + ret = EX_VAR(opline->result.var); + ZVAL_NULL(ret); + Z_VAR_FLAGS_P(ret) = 0; } call->prev_execute_data = execute_data; - i_init_func_execute_data(call, &fbc->op_array, return_value); + i_init_func_execute_data(call, &fbc->op_array, ret); if (EXPECTED(zend_execute_ex == execute_ex)) { ZEND_VM_ENTER(); |