diff --git a/ext/standard/http.c b/ext/standard/http.c index 92d0af5cd9b..1145329a794 100644 --- a/ext/standard/http.c +++ b/ext/standard/http.c @@ -226,7 +226,7 @@ PHP_FUNCTION(http_build_query) Z_PARAM_ARRAY_OR_OBJECT(formdata) Z_PARAM_OPTIONAL Z_PARAM_STRING(prefix, prefix_len) - Z_PARAM_STR(arg_sep) + Z_PARAM_STR_OR_NULL(arg_sep) Z_PARAM_LONG(enc_type) ZEND_PARSE_PARAMETERS_END(); diff --git a/ext/standard/tests/http/http_build_query/gh12745.phpt b/ext/standard/tests/http/http_build_query/gh12745.phpt new file mode 100644 index 00000000000..3418498bf22 --- /dev/null +++ b/ext/standard/tests/http/http_build_query/gh12745.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug GH-9316 (http_build_query() default null argument for $arg_separator is implicitly coerced to string) +--FILE-- + 'world', + 'foo' => 'bar', +]; + +var_dump(http_build_query( + $data, + encoding_type: PHP_QUERY_RFC3986 +)); +?> +--EXPECT-- +string(19) "hello=world&foo=bar"