From 6660338ccc3a7b0b8f04563505fb3a83ec93053f Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Sat, 30 May 2020 22:46:08 +0400
Subject: [PATCH] Fix crash in sticker sets without a thumbnail.

---
 Telegram/SourceFiles/chat_helpers/stickers.cpp | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/Telegram/SourceFiles/chat_helpers/stickers.cpp b/Telegram/SourceFiles/chat_helpers/stickers.cpp
index 61d228856..634537a0c 100644
--- a/Telegram/SourceFiles/chat_helpers/stickers.cpp
+++ b/Telegram/SourceFiles/chat_helpers/stickers.cpp
@@ -608,6 +608,9 @@ void FeaturedSetsReceived(
 		const auto title = GetSetTitle(*data);
 		const auto installDate = data->vinstalled_date().value_or_empty();
 		const auto thumb = data->vthumb();
+		const auto thumbnail = thumb
+			? Images::FromPhotoSize(&Auth(), *data, *thumb)
+			: ImageWithLocation();
 		if (it == sets.cend()) {
 			auto setClientFlags = MTPDstickerSet_ClientFlag::f_featured
 				| MTPDstickerSet_ClientFlag::f_not_loaded;
@@ -624,8 +627,7 @@ void FeaturedSetsReceived(
 				data->vhash().v,
 				data->vflags().v | setClientFlags,
 				installDate)).first;
-			it->second->setThumbnail(
-				Images::FromPhotoSize(&Auth(), *data, *thumb));
+			it->second->setThumbnail(thumbnail);
 		} else {
 			const auto set = it->second.get();
 			set->access = data->vaccess_hash().v;
@@ -635,8 +637,7 @@ void FeaturedSetsReceived(
 			set->flags = data->vflags().v | clientFlags;
 			set->flags |= MTPDstickerSet_ClientFlag::f_featured;
 			set->installDate = installDate;
-			set->setThumbnail(
-				Images::FromPhotoSize(&Auth(), *data, *thumb));
+			set->setThumbnail(thumbnail);
 			if (unreadMap.contains(set->id)) {
 				set->flags |= MTPDstickerSet_ClientFlag::f_unread;
 			} else {
@@ -910,6 +911,9 @@ Set *FeedSet(const MTPDstickerSet &data) {
 	auto title = GetSetTitle(data);
 	auto flags = MTPDstickerSet::Flags(0);
 	const auto thumb = data.vthumb();
+	const auto thumbnail = thumb
+		? Images::FromPhotoSize(&Auth(), data, *thumb)
+		: ImageWithLocation();
 	if (it == sets.cend()) {
 		it = sets.emplace(data.vid().v, std::make_unique<Set>(
 			&Auth().data(),
@@ -921,8 +925,7 @@ Set *FeedSet(const MTPDstickerSet &data) {
 			data.vhash().v,
 			data.vflags().v | MTPDstickerSet_ClientFlag::f_not_loaded,
 			data.vinstalled_date().value_or_empty())).first;
-		it->second->setThumbnail(
-			Images::FromPhotoSize(&Auth(), data, *thumb));
+		it->second->setThumbnail(thumbnail);
 	} else {
 		const auto set = it->second.get();
 		set->access = data.vaccess_hash().v;
@@ -939,8 +942,7 @@ Set *FeedSet(const MTPDstickerSet &data) {
 		set->installDate = installDate
 			? (installDate->v ? installDate->v : base::unixtime::now())
 			: TimeId(0);
-		it->second->setThumbnail(
-			Images::FromPhotoSize(&Auth(), data, *thumb));
+		it->second->setThumbnail(thumbnail);
 		if (set->count != data.vcount().v
 			|| set->hash != data.vhash().v
 			|| set->emoji.isEmpty()) {