summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiha Zupan <mihazupan.zupan1@gmail.com>2024-03-02 22:38:18 +0100
committerGitHub <noreply@github.com>2024-03-02 13:38:18 -0800
commitcd5587ddeddecebf6291f8462b4b6c25db433a71 (patch)
tree0b3a788f2cb24a76ee482f7ef7ab4dac7f5c202e
parentce6cf4b2e2a8c7d80ed7b31487eaab574d9007fa (diff)
Skip long values when building Rabin-Karp buckets in SearchValues (#98901)
-rw-r--r--src/libraries/System.Private.CoreLib/src/System/SearchValues/Strings/Helpers/RabinKarp.cs6
1 files changed, 6 insertions, 0 deletions
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 d420c70d16c1..d8970655cb31 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 @@ namespace System.Buffers
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++)
{