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! */
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