summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_execute.h
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2019-04-18 02:32:06 +0300
committerDmitry Stogov <dmitry@zend.com>2019-04-18 02:32:06 +0300
commitf1767e23f4007e2377abf6ef3a08d0160f64a9f5 (patch)
tree8e541bd40a02542dccdf02563eaeea9d6ffbc7f9 /Zend/zend_vm_execute.h
parentf9dbfcd6fa337e24bfcb1796c4c69ff2a38c1e30 (diff)
parent38f9c8d93da66e191116dd23b6ea7ede494c71f2 (diff)
downloadphp-git-f1767e23f4007e2377abf6ef3a08d0160f64a9f5.tar.gz
Merge branch 'PHP-7.4'
* PHP-7.4: Don't initialize return value before calling user functions
Diffstat (limited to 'Zend/zend_vm_execute.h')
-rw-r--r--Zend/zend_vm_execute.h13
1 files changed, 4 insertions, 9 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index b053eff41d..9e60ef4947 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -995,7 +995,6 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_UCALL_SPEC_RETV
ret = NULL;
if (0) {
ret = EX_VAR(opline->result.var);
- ZVAL_NULL(ret);
}
call->prev_execute_data = execute_data;
@@ -1019,7 +1018,6 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_UCALL_SPEC_RETV
ret = NULL;
if (1) {
ret = EX_VAR(opline->result.var);
- ZVAL_NULL(ret);
}
call->prev_execute_data = execute_data;
@@ -1044,7 +1042,6 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_S
ret = NULL;
if (0) {
ret = EX_VAR(opline->result.var);
- ZVAL_NULL(ret);
}
call->prev_execute_data = execute_data;
@@ -1121,7 +1118,6 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_S
ret = NULL;
if (1) {
ret = EX_VAR(opline->result.var);
- ZVAL_NULL(ret);
}
call->prev_execute_data = execute_data;
@@ -1209,7 +1205,6 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETV
ret = NULL;
if (0) {
ret = EX_VAR(opline->result.var);
- ZVAL_NULL(ret);
}
call->prev_execute_data = execute_data;
@@ -1305,7 +1300,6 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETV
ret = NULL;
if (1) {
ret = EX_VAR(opline->result.var);
- ZVAL_NULL(ret);
}
call->prev_execute_data = execute_data;
@@ -1934,6 +1928,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_dispatch_try_catch_finally_hel
zend_generator_close(generator, 1);
ZEND_VM_RETURN();
} else {
+ /* We didn't execute RETURN, and have to initialize return_value */
+ if (EX(return_value)) {
+ ZVAL_UNDEF(EX(return_value));
+ }
ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
}
@@ -3426,7 +3424,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HAN
if (RETURN_VALUE_USED(opline)) {
return_value = EX_VAR(opline->result.var);
- ZVAL_NULL(return_value);
}
new_op_array->scope = EX(func)->op_array.scope;
@@ -12933,7 +12930,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HA
if (RETURN_VALUE_USED(opline)) {
return_value = EX_VAR(opline->result.var);
- ZVAL_NULL(return_value);
}
new_op_array->scope = EX(func)->op_array.scope;
@@ -40677,7 +40673,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLE
if (RETURN_VALUE_USED(opline)) {
return_value = EX_VAR(opline->result.var);
- ZVAL_NULL(return_value);
}
new_op_array->scope = EX(func)->op_array.scope;