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);