From d57aa2a1f6580d4b7b7af0938e8414df996b532c Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 25 May 2023 11:50:06 +0400 Subject: [PATCH] Fix possible crash on MTP::Instance shutdown. --- Telegram/SourceFiles/mtproto/session.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/mtproto/session.cpp b/Telegram/SourceFiles/mtproto/session.cpp index a10f2e7d57..0a50a45614 100644 --- a/Telegram/SourceFiles/mtproto/session.cpp +++ b/Telegram/SourceFiles/mtproto/session.cpp @@ -557,13 +557,22 @@ void Session::tryToReceive() { if (messages.empty()) { break; } + const auto guard = QPointer(this); + const auto instance = QPointer(_instance); + const auto main = (_shiftedDcId == BareDcId(_shiftedDcId)); for (const auto &message : messages) { if (message.requestId) { - _instance->processCallback(message); - } else if (_shiftedDcId == BareDcId(_shiftedDcId)) { + instance->processCallback(message); + } else if (main) { // Process updates only in main session. - _instance->processUpdate(message); + instance->processUpdate(message); } + if (!instance) { + return; + } + } + if (!guard) { + break; } } }