From bb0ab272440445a27d734c998a3ea53c1dc8c00a Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 19 Jan 2024 21:46:00 +0400 Subject: [PATCH] Fix possible crash in service message update. --- Telegram/SourceFiles/history/history_item.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index e82891a4f..c05cd431d 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -919,6 +919,17 @@ void HistoryItem::updateServiceDependent(bool force) { } } } + + // Record resolve state for upcoming on-demand resolving. + if (dependent->msg || !dependent->msgId || force) { + dependent->pendingResolve = false; + } else { + dependent->pendingResolve = true; + dependent->requestedResolve = false; + } + + // updateDependentServiceText may call UpdateComponents! + // So the `dependent` pointer becomes invalid. if (dependent->msg) { updateDependentServiceText(); } else if (force) { @@ -931,12 +942,6 @@ void HistoryItem::updateServiceDependent(bool force) { if (force && gotDependencyItem) { Core::App().notifications().checkDelayed(); } - if (dependent->msg || !dependent->msgId || force) { - dependent->pendingResolve = false; - } else { - dependent->pendingResolve = true; - dependent->requestedResolve = false; - } } MsgId HistoryItem::dependencyMsgId() const {