diff options
author | Dmitry Stogov <dmitry@zend.com> | 2019-04-18 02:32:06 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2019-04-18 02:32:06 +0300 |
commit | f1767e23f4007e2377abf6ef3a08d0160f64a9f5 (patch) | |
tree | 8e541bd40a02542dccdf02563eaeea9d6ffbc7f9 /Zend/zend_vm_execute.h | |
parent | f9dbfcd6fa337e24bfcb1796c4c69ff2a38c1e30 (diff) | |
parent | 38f9c8d93da66e191116dd23b6ea7ede494c71f2 (diff) | |
download | php-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.h | 13 |
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; |