diff options
-rw-r--r-- | Zend/tests/named_params/unknown_named_param.phpt | 7 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 1 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 1 |
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; } |