1- /* auto-generated on 2025-07-27 12:29:50 -0400. Do not edit! */
1+ /* auto-generated on 2025-09-23 12:57:35 -0400. Do not edit! */
22/* begin file src/ada.cpp */
33#include "ada.h"
44/* begin file src/checkers.cpp */
@@ -15841,7 +15841,11 @@ tl::expected<std::string, errors> url_pattern_init::process_search(
1584115841 if (value.starts_with("?")) {
1584215842 value.remove_prefix(1);
1584315843 }
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+
1584515849 // If type is "pattern" then return strippedValue.
1584615850 if (type == process_type::pattern) {
1584715851 return std::string(value);
@@ -16282,7 +16286,10 @@ tl::expected<std::string, errors> canonicalize_search(std::string_view input) {
1628216286 url->set_search(input);
1628316287 if (url->has_search()) {
1628416288 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 "";
1628616293 }
1628716294 return tl::unexpected(errors::type_error);
1628816295}
@@ -16302,7 +16309,10 @@ tl::expected<std::string, errors> canonicalize_hash(std::string_view input) {
1630216309 // Return dummyURL's fragment.
1630316310 if (url->has_hash()) {
1630416311 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 "";
1630616316 }
1630716317 return tl::unexpected(errors::type_error);
1630816318}
0 commit comments