diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2020-08-26 11:52:45 +0200 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-08-26 11:53:02 +0200 |
| commit | 1003ae2692ef76d34d75d417e913562b64695646 (patch) | |
| tree | 7eafc2ab32dacec354e7fdb65f8b35fb3a00b65e | |
| parent | 492621f99eb202c4782564334f2fe71aae43c84e (diff) | |
| download | php-git-1003ae2692ef76d34d75d417e913562b64695646.tar.gz | |
Fix passing of undef var to named arg
This needs to use the previously computed argument target.
| -rw-r--r-- | Zend/tests/named_params/undef_var.phpt | 17 | ||||
| -rw-r--r-- | Zend/zend_vm_def.h | 1 | ||||
| -rw-r--r-- | Zend/zend_vm_execute.h | 6 |
3 files changed, 17 insertions, 7 deletions
diff --git a/Zend/tests/named_params/undef_var.phpt b/Zend/tests/named_params/undef_var.phpt new file mode 100644 index 0000000000..b1d5682434 --- /dev/null +++ b/Zend/tests/named_params/undef_var.phpt @@ -0,0 +1,17 @@ +--TEST-- +Passing undefined variabled to named arg +--FILE-- +<?php + +function func1($arg) { var_dump($arg); } +func1(arg: $undef); +func2(arg: $undef); +function func2($arg) { var_dump($arg); } + +?> +--EXPECTF-- +Warning: Undefined variable $undef in %s on line %d +NULL + +Warning: Undefined variable $undef in %s on line %d +NULL diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 561c23af8c..a0beebd9fa 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -4855,7 +4855,6 @@ ZEND_VM_C_LABEL(send_var_by_ref): if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) { SAVE_OPLINE(); ZVAL_UNDEFINED_OP1(); - arg = ZEND_CALL_VAR(EX(call), opline->result.var); ZVAL_NULL(arg); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 31325fb4ab..825c49c0b4 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -23363,7 +23363,6 @@ send_var_by_ref: if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) { SAVE_OPLINE(); ZVAL_UNDEFINED_OP1(); - arg = ZEND_CALL_VAR(EX(call), opline->result.var); ZVAL_NULL(arg); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -27309,7 +27308,6 @@ send_var_by_ref: if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) { SAVE_OPLINE(); ZVAL_UNDEFINED_OP1(); - arg = ZEND_CALL_VAR(EX(call), opline->result.var); ZVAL_NULL(arg); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -27376,7 +27374,6 @@ send_var_by_ref: if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) { SAVE_OPLINE(); ZVAL_UNDEFINED_OP1(); - arg = ZEND_CALL_VAR(EX(call), opline->result.var); ZVAL_NULL(arg); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -40895,7 +40892,6 @@ send_var_by_ref: if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) { SAVE_OPLINE(); ZVAL_UNDEFINED_OP1(); - arg = ZEND_CALL_VAR(EX(call), opline->result.var); ZVAL_NULL(arg); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -46015,7 +46011,6 @@ send_var_by_ref: if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) { SAVE_OPLINE(); ZVAL_UNDEFINED_OP1(); - arg = ZEND_CALL_VAR(EX(call), opline->result.var); ZVAL_NULL(arg); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -46081,7 +46076,6 @@ send_var_by_ref: if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) { SAVE_OPLINE(); ZVAL_UNDEFINED_OP1(); - arg = ZEND_CALL_VAR(EX(call), opline->result.var); ZVAL_NULL(arg); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } |
