1
- /* auto-generated on 2025-07-27 12:29:50 -0400. Do not edit! */
1
+ /* auto-generated on 2025-09-22 20:51:08 -0400. Do not edit! */
2
2
/* begin file src/ada.cpp */
3
3
#include "ada.h"
4
4
/* begin file src/checkers.cpp */
@@ -15841,7 +15841,11 @@ tl::expected<std::string, errors> url_pattern_init::process_search(
15841
15841
if (value.starts_with("?")) {
15842
15842
value.remove_prefix(1);
15843
15843
}
15844
- ADA_ASSERT_TRUE(!value.starts_with("?"));
15844
+ // We cannot assert that the value is no longer starting with a single
15845
+ // question mark because technically it can start. The question is whether or
15846
+ // not we should remove the first question mark. Ref:
15847
+ // https://github.com/ada-url/ada/pull/992 The spec is not clear on this.
15848
+
15845
15849
// If type is "pattern" then return strippedValue.
15846
15850
if (type == process_type::pattern) {
15847
15851
return std::string(value);
@@ -16282,7 +16286,10 @@ tl::expected<std::string, errors> canonicalize_search(std::string_view input) {
16282
16286
url->set_search(input);
16283
16287
if (url->has_search()) {
16284
16288
const auto search = url->get_search();
16285
- return std::string(search.substr(1));
16289
+ if (!search.empty()) {
16290
+ return std::string(search.substr(1));
16291
+ }
16292
+ return "";
16286
16293
}
16287
16294
return tl::unexpected(errors::type_error);
16288
16295
}
@@ -16302,7 +16309,10 @@ tl::expected<std::string, errors> canonicalize_hash(std::string_view input) {
16302
16309
// Return dummyURL's fragment.
16303
16310
if (url->has_hash()) {
16304
16311
const auto hash = url->get_hash();
16305
- return std::string(hash.substr(1));
16312
+ if (!hash.empty()) {
16313
+ return std::string(hash.substr(1));
16314
+ }
16315
+ return "";
16306
16316
}
16307
16317
return tl::unexpected(errors::type_error);
16308
16318
}
0 commit comments