From f36c0fee97441e1f48ec5a22d515f22e14df9f5c Mon Sep 17 00:00:00 2001 From: fanway <23499543+fanway@users.noreply.github.com> Date: Thu, 5 Nov 2020 01:11:17 +0300 Subject: [PATCH] Fix `runIgnoreReplaces` fall into infinity loop (#2151) * Fix `runIgnoreReplaces` fall into infinity loop The regex pattern was not checked for emptiness, which led to an endless loop * Update CHANGELOG.md Co-authored-by: pajlada --- CHANGELOG.md | 1 + src/providers/twitch/TwitchMessageBuilder.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 488392cf..3679a436 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ - Bugfix: Fix Tab key not working in the Ctrl+K Quick Switcher (#2065) - Bugfix: Fix bug preventing moderator actions when viewing a user card from the search window (#1089) - Bugfix: Fix `:` emote completion menu ignoring emote capitalization (#1962) +- Bugfix: Fix a bug that caused `Ignore page` to fall into an infinity loop with an empty pattern and regex enabled (#2125) ## 2.2.0 diff --git a/src/providers/twitch/TwitchMessageBuilder.cpp b/src/providers/twitch/TwitchMessageBuilder.cpp index ee35c4ed..ea66ca53 100644 --- a/src/providers/twitch/TwitchMessageBuilder.cpp +++ b/src/providers/twitch/TwitchMessageBuilder.cpp @@ -763,6 +763,11 @@ void TwitchMessageBuilder::runIgnoreReplaces( { continue; } + const auto &pattern = phrase.getPattern(); + if (pattern.isEmpty()) + { + continue; + } if (phrase.isRegex()) { const auto ®ex = phrase.getRegex(); @@ -835,11 +840,6 @@ void TwitchMessageBuilder::runIgnoreReplaces( } else { - const auto &pattern = phrase.getPattern(); - if (pattern.isEmpty()) - { - continue; - } int from = 0; while ((from = this->originalMessage_.indexOf( pattern, from, phrase.caseSensitivity())) != -1)