summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/named_params/unknown_named_param.phpt7
-rw-r--r--Zend/zend_vm_def.h1
-rw-r--r--Zend/zend_vm_execute.h1
3 files changed, 9 insertions, 0 deletions
diff --git a/Zend/tests/named_params/unknown_named_param.phpt b/Zend/tests/named_params/unknown_named_param.phpt
index 79ca89169d..5a18932ffd 100644
--- a/Zend/tests/named_params/unknown_named_param.phpt
+++ b/Zend/tests/named_params/unknown_named_param.phpt
@@ -28,6 +28,12 @@ try {
}
try {
+ test(...new ArrayIterator(['unknown' => 42]));
+} catch (Error $e) {
+ echo $e->getMessage(), "\n";
+}
+
+try {
test2(a: 42);
} catch (Error $e) {
echo $e->getMessage(), "\n";
@@ -38,3 +44,4 @@ try {
Unknown named parameter $b
Unknown named parameter $b
Unknown named parameter $b
+Unknown named parameter $unknown
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index a0beebd9fa..64c0ac61db 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -5107,6 +5107,7 @@ ZEND_VM_C_LABEL(send_again):
have_named_params = 1;
top = zend_handle_named_arg(&EX(call), name, &arg_num, cache_slot);
if (UNEXPECTED(!top)) {
+ zend_string_release(name);
break;
}
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 825c49c0b4..efaed5e6f4 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -1995,6 +1995,7 @@ send_again:
have_named_params = 1;
top = zend_handle_named_arg(&EX(call), name, &arg_num, cache_slot);
if (UNEXPECTED(!top)) {
+ zend_string_release(name);
break;
}