From 43559fb6b7c00f00e0d0254d3284bdde94e78554 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 5 Jan 2022 14:13:37 +0300 Subject: [PATCH] Fix crash in history switching. --- Telegram/SourceFiles/history/history_widget.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 190a29a5e..1b8817325 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -491,7 +491,10 @@ HistoryWidget::HistoryWidget( session().data().viewResizeRequest( ) | rpl::start_with_next([=](not_null view) { - if (view->data()->mainView() == view) { + const auto item = view->data(); + const auto history = item->history(); + if (item->mainView() == view + && (history == _history || history == _migrated)) { updateHistoryGeometry(); } }, lifetime()); @@ -2238,6 +2241,9 @@ void HistoryWidget::setHistory(History *history) { return; } + const auto wasHistory = base::take(_history); + const auto wasMigrated = base::take(_migrated); + // Unload lottie animations. const auto unloadHeavyViewParts = [](History *history) { if (history) { @@ -2246,8 +2252,8 @@ void HistoryWidget::setHistory(History *history) { history->forceFullResize(); } }; - unloadHeavyViewParts(_history); - unloadHeavyViewParts(_migrated); + unloadHeavyViewParts(wasHistory); + unloadHeavyViewParts(wasMigrated); unregisterDraftSources(); _history = history;