Skip to content

Commit 1003ae2

Browse files
committed
Fix passing of undef var to named arg
This needs to use the previously computed argument target.
1 parent 492621f commit 1003ae2

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Passing undefined variabled to named arg
3+
--FILE--
4+
<?php
5+
6+
function func1($arg) { var_dump($arg); }
7+
func1(arg: $undef);
8+
func2(arg: $undef);
9+
function func2($arg) { var_dump($arg); }
10+
11+
?>
12+
--EXPECTF--
13+
Warning: Undefined variable $undef in %s on line %d
14+
NULL
15+
16+
Warning: Undefined variable $undef in %s on line %d
17+
NULL

Zend/zend_vm_def.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4855,7 +4855,6 @@ ZEND_VM_C_LABEL(send_var_by_ref):
48554855
if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
48564856
SAVE_OPLINE();
48574857
ZVAL_UNDEFINED_OP1();
4858-
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
48594858
ZVAL_NULL(arg);
48604859
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48614860
}

Zend/zend_vm_execute.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23363,7 +23363,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_VAR_CONST_HAN
2336323363
if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
2336423364
SAVE_OPLINE();
2336523365
ZVAL_UNDEFINED_OP1();
23366-
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
2336723366
ZVAL_NULL(arg);
2336823367
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2336923368
}
@@ -27309,7 +27308,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED_HA
2730927308
if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
2731027309
SAVE_OPLINE();
2731127310
ZVAL_UNDEFINED_OP1();
27312-
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
2731327311
ZVAL_NULL(arg);
2731427312
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2731527313
}
@@ -27376,7 +27374,6 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_V
2737627374
if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
2737727375
SAVE_OPLINE();
2737827376
ZVAL_UNDEFINED_OP1();
27379-
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
2738027377
ZVAL_NULL(arg);
2738127378
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2738227379
}
@@ -40895,7 +40892,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_CV_CONST_HAND
4089540892
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
4089640893
SAVE_OPLINE();
4089740894
ZVAL_UNDEFINED_OP1();
40898-
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
4089940895
ZVAL_NULL(arg);
4090040896
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4090140897
}
@@ -46015,7 +46011,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_HAN
4601546011
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
4601646012
SAVE_OPLINE();
4601746013
ZVAL_UNDEFINED_OP1();
46018-
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
4601946014
ZVAL_NULL(arg);
4602046015
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4602146016
}
@@ -46081,7 +46076,6 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_C
4608146076
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
4608246077
SAVE_OPLINE();
4608346078
ZVAL_UNDEFINED_OP1();
46084-
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
4608546079
ZVAL_NULL(arg);
4608646080
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4608746081
}

0 commit comments

Comments
 (0)