From 606a90a4ace9571b0842d941cfcbcaaa11487701 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 3 Oct 2019 10:02:28 +0300 Subject: [PATCH] Fix crash in emoji suggestions. Fixes #6636. --- .../SourceFiles/chat_helpers/emoji_keywords.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/chat_helpers/emoji_keywords.cpp b/Telegram/SourceFiles/chat_helpers/emoji_keywords.cpp index 92653bcac..a1d6bc3a0 100644 --- a/Telegram/SourceFiles/chat_helpers/emoji_keywords.cpp +++ b/Telegram/SourceFiles/chat_helpers/emoji_keywords.cpp @@ -168,11 +168,20 @@ void AppendFoundEmoji( std::vector &result, const QString &label, const std::vector &list) { + // It is important that the 'result' won't relocate while inserting. + result.reserve(result.size() + list.size()); + const auto alreadyBegin = result.data(); + const auto alreadyEnd = alreadyBegin + result.size(); + auto &&add = ranges::view::all( list ) | ranges::view::filter([&](const LangPackEmoji &entry) { - const auto i = ranges::find(result, entry.emoji, &Result::emoji); - return (i == end(result)); + const auto i = ranges::find( + alreadyBegin, + alreadyEnd, + entry.emoji, + &Result::emoji); + return (i == alreadyEnd); }) | ranges::view::transform([&](const LangPackEmoji &entry) { return Result{ entry.emoji, label, entry.text }; });