Repository: nodejs/node
Pull request: deps: update ada to 3.2.3

This is an automated update of ada to 3.2.3.

Changed files:
filename: deps/ada/ada.cpp
patch: @@ -1,4 +1,4 @@
-/* auto-generated on 2025-03-30 13:24:42 -0400. Do not edit! */
+/* auto-generated on 2025-04-24 20:04:09 -0400. Do not edit! */
 /* begin file src/ada.cpp */
 #include "ada.h"
 /* begin file src/checkers.cpp */
@@ -11636,15 +11636,20 @@ ada_really_inline void parse_prepared_path(std::string_view input,
     // Note: input cannot be empty, it must at least contain one character ('.')
     // Note: we know that '\' is not present.
     if (input[0] != '.') {
-      size_t slashdot = input.find("/.");
-      if (slashdot == std::string_view::npos) {  // common case
-        trivial_path = true;
-      } else {  // uncommon
-        // only three cases matter: /./, /.. or a final /
-        trivial_path =
-            !(slashdot + 2 == input.size() || input[slashdot + 2] == '.' ||
-              input[slashdot + 2] == '/');
+      size_t slashdot = 0;
+      bool dot_is_file = true;
+      for (;;) {
+        slashdot = input.find("/.", slashdot);
+        if (slashdot == std::string_view::npos) {  // common case
+          break;
+        } else {  // uncommon
+          // only three cases matter: /./, /.. or a final /
+          slashdot += 2;
+          dot_is_file &= !(slashdot == input.size() || input[slashdot] == '.' ||
+                           input[slashdot] == '/');
+        }
       }
+      trivial_path = dot_is_file;
     }
   }
   if (trivial_path) {
@@ -15093,15 +15098,20 @@ inline void url_aggregator::consume_prepared_path(std::string_view input) {
     // Note: input cannot be empty, it must at least contain one character ('.')
     // Note: we know that '\' is not present.
     if (input[0] != '.') {
-      size_t slashdot = input.find("/.");
-      if (slashdot == std::string_view::npos) {  // common case
-        trivial_path = true;
-      } else {  // uncommon
-        // only three cases matter: /./, /.. or a final /
-        trivial_path =
-            !(slashdot + 2 == input.size() || input[slashdot + 2] == '.' ||
-              input[slashdot + 2] == '/');
+      size_t slashdot = 0;
+      bool dot_is_file = true;
+      for (;;) {
+        slashdot = input.find("/.", slashdot);
+        if (slashdot == std::string_view::npos) {  // common case
+          break;
+        } else {  // uncommon
+          // only three cases matter: /./, /.. or a final /
+          slashdot += 2;
+          dot_is_file &= !(slashdot == input.size() || input[slashdot] == '.' ||
+                           input[slashdot] == '/');
+        }
       }
+      trivial_path = dot_is_file;
     }
   }
   if (trivial_path && is_at_path()) {

filename: deps/ada/ada.h
patch: @@ -1,4 +1,4 @@
-/* auto-generated on 2025-03-30 13:24:42 -0400. Do not edit! */
+/* auto-generated on 2025-04-24 20:04:09 -0400. Do not edit! */
 /* begin file include/ada.h */
 /**
  * @file ada.h
@@ -10502,14 +10502,14 @@ constructor_string_parser<regex_provider>::parse(std::string_view input) {
 #ifndef ADA_ADA_VERSION_H
 #define ADA_ADA_VERSION_H
 
-#define ADA_VERSION "3.2.2"
+#define ADA_VERSION "3.2.3"
 
 namespace ada {
 
 enum {
   ADA_VERSION_MAJOR = 3,
   ADA_VERSION_MINOR = 2,
-  ADA_VERSION_REVISION = 2,
+  ADA_VERSION_REVISION = 3,
 };
 
 }  // namespace ada