Commit f4101c1153

Matthew Borkowski <matthew.h.borkowski@gmail.com>
2021-05-22 10:55:28
fix accidental quadratic dependence on haystack length in replace and replacementSize (#8859)
1 parent 4b69bd6
Changed files (1)
lib
lib/std/mem.zig
@@ -2074,7 +2074,7 @@ pub fn replace(comptime T: type, input: []const T, needle: []const T, replacemen
     var slide: usize = 0;
     var replacements: usize = 0;
     while (slide < input.len) {
-        if (mem.indexOf(T, input[slide..], needle) == @as(usize, 0)) {
+        if (mem.startsWith(T, input[slide..], needle)) {
             mem.copy(T, output[i .. i + replacement.len], replacement);
             i += replacement.len;
             slide += needle.len;
@@ -2129,7 +2129,7 @@ pub fn replacementSize(comptime T: type, input: []const T, needle: []const T, re
     var i: usize = 0;
     var size: usize = input.len;
     while (i < input.len) {
-        if (mem.indexOf(T, input[i..], needle) == @as(usize, 0)) {
+        if (mem.startsWith(T, input[i..], needle)) {
             size = size - needle.len + replacement.len;
             i += needle.len;
         } else {