From 03b0c0cff4e0dfa493a3bb4a9fe37880e063b63e Mon Sep 17 00:00:00 2001 From: John Preston <johnprestonmail@gmail.com> Date: Fri, 30 Nov 2018 09:45:22 +0400 Subject: [PATCH] Fix crash in forwarding box. --- Telegram/SourceFiles/boxes/peer_list_controllers.cpp | 7 ++++++- Telegram/SourceFiles/boxes/peer_list_controllers.h | 8 ++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/boxes/peer_list_controllers.cpp b/Telegram/SourceFiles/boxes/peer_list_controllers.cpp index b0ca9d87b..62271ef8c 100644 --- a/Telegram/SourceFiles/boxes/peer_list_controllers.cpp +++ b/Telegram/SourceFiles/boxes/peer_list_controllers.cpp @@ -910,7 +910,12 @@ void ChooseRecipientBoxController::prepareViewHook() { } void ChooseRecipientBoxController::rowClicked(not_null<PeerListRow*> row) { - _callback(row->peer()); + auto weak = base::make_weak(this); + auto callback = std::move(_callback); + callback(row->peer()); + if (weak) { + _callback = std::move(callback); + } } auto ChooseRecipientBoxController::createRow( diff --git a/Telegram/SourceFiles/boxes/peer_list_controllers.h b/Telegram/SourceFiles/boxes/peer_list_controllers.h index 4c8227204..5c66d5686 100644 --- a/Telegram/SourceFiles/boxes/peer_list_controllers.h +++ b/Telegram/SourceFiles/boxes/peer_list_controllers.h @@ -198,7 +198,9 @@ private: }; -class AddBotToGroupBoxController : public ChatsListBoxController, public base::has_weak_ptr { +class AddBotToGroupBoxController + : public ChatsListBoxController + , public base::has_weak_ptr { public: static void Start(not_null<UserData*> bot); @@ -227,7 +229,9 @@ private: }; -class ChooseRecipientBoxController : public ChatsListBoxController { +class ChooseRecipientBoxController + : public ChatsListBoxController + , public base::has_weak_ptr { public: ChooseRecipientBoxController( FnMut<void(not_null<PeerData*>)> callback);