From e6dd7d76842f6681b20dbca57ccbcf16665e9e65 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 1 Mar 2018 20:17:39 +0300 Subject: [PATCH] Fix crash in item view refresh. --- .../history/view/history_view_list_widget.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 72ad0e8e0..418ee1a4c 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -2402,11 +2402,17 @@ void ListWidget::refreshItem(not_null view) { const auto index = i - begin(_items); if (index < int(_items.size())) { const auto item = view->data(); - _views.erase(item); + const auto was = [&]() -> std::unique_ptr { + if (const auto i = _views.find(item); i != end(_views)) { + auto result = std::move(i->second); + _views.erase(i); + return std::move(result); + } + return nullptr; + }(); const auto [i, ok] = _views.emplace( item, item->createView(this)); - const auto was = view; const auto now = i->second.get(); _items[index] = now;