From 09eba1bde346bb0499ae106958b66532432ba35b Mon Sep 17 00:00:00 2001 From: Miha Zupan Date: Sun, 25 Feb 2024 08:32:05 +0100 Subject: [PATCH] Skip long values when building Rabin-Karp buckets in SearchValues --- .../src/System/SearchValues/Strings/Helpers/RabinKarp.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libraries/System.Private.CoreLib/src/System/SearchValues/Strings/Helpers/RabinKarp.cs b/src/libraries/System.Private.CoreLib/src/System/SearchValues/Strings/Helpers/RabinKarp.cs index d420c70d16c198..d8970655cb31b7 100644 --- a/src/libraries/System.Private.CoreLib/src/System/SearchValues/Strings/Helpers/RabinKarp.cs +++ b/src/libraries/System.Private.CoreLib/src/System/SearchValues/Strings/Helpers/RabinKarp.cs @@ -64,6 +64,12 @@ public RabinKarp(ReadOnlySpan values) foreach (string value in values) { + if (value.Length > MaxInputLength) + { + // This value can never match. There's no point in including it in the buckets. + continue; + } + nuint hash = 0; for (int i = 0; i < minimumLength; i++) {