commit 5528df1a2080e249337ee9565f03058c52d55b87
Author: Takuya Aramaki <takaram71@gmail.com>
Date: Sun Dec 7 02:06:19 2025 +0900
Fix TypeError message of `setlocale()` (#20625)
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 8b76a179061..9b4681367a3 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -4957,7 +4957,7 @@ PHP_FUNCTION(setlocale)
for (uint32_t i = 0; i < num_args; i++) {
if (UNEXPECTED(Z_TYPE(args[i]) != IS_ARRAY && !zend_parse_arg_str(&args[i], &strings[i], true, i + 2))) {
- zend_wrong_parameter_type_error(i + 2, Z_EXPECTED_ARRAY_OR_STRING, &args[i]);
+ zend_wrong_parameter_type_error(i + 2, Z_EXPECTED_ARRAY_OR_STRING_OR_NULL, &args[i]);
goto out;
}
}
diff --git a/ext/standard/tests/strings/gh18823_strict.phpt b/ext/standard/tests/strings/gh18823_strict.phpt
index 80b21d20931..3735eab0067 100644
--- a/ext/standard/tests/strings/gh18823_strict.phpt
+++ b/ext/standard/tests/strings/gh18823_strict.phpt
@@ -15,5 +15,5 @@
}
?>
--EXPECT--
-setlocale(): Argument #2 ($locales) must be of type array|string, int given
-setlocale(): Argument #3 must be of type array|string, int given
+setlocale(): Argument #2 ($locales) must be of type array|string|null, int given
+setlocale(): Argument #3 must be of type array|string|null, int given