From 92f95fa9eba2a4cda936a5166642a7ec593d775a Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 2 Apr 2019 15:46:08 +0300 Subject: [PATCH] Fixed crash when edit album item with photo with invalid dimensions. - Added InformBox for invalid files. --- Telegram/Resources/langs/lang.strings | 1 + .../SourceFiles/boxes/edit_caption_box.cpp | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index e7a91a0f4..33dda64bf 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -163,6 +163,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_pinned_notify" = "Notify all members"; "lng_edit_media" = "Edit media"; +"lng_edit_media_album_error" = "This file cannot be saved as a part of an album."; "lng_intro_about" = "Welcome to the official Telegram Desktop app.\nIt's fast and secure."; "lng_start_msgs" = "START MESSAGING"; diff --git a/Telegram/SourceFiles/boxes/edit_caption_box.cpp b/Telegram/SourceFiles/boxes/edit_caption_box.cpp index 11c8dbf4b..e4676119d 100644 --- a/Telegram/SourceFiles/boxes/edit_caption_box.cpp +++ b/Telegram/SourceFiles/boxes/edit_caption_box.cpp @@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/input_fields.h" #include "window/window_controller.h" #include "ui/widgets/checkbox.h" +#include "confirm_box.h" EditCaptionBox::EditCaptionBox( QWidget*, @@ -422,9 +423,22 @@ void EditCaptionBox::createEditMediaButton() { // Don't rewrite _preparedList if new list is not valid for album. if (_isAlbum) { - const auto fileMedia = &list.files.front().information->media; - if (!base::get_if(fileMedia) - && !base::get_if(fileMedia)) { + using Info = FileMediaInformation; + + const auto media = &list.files.front().information->media; + const auto valid = media->match([&](const Info::Image &data) { + return Storage::ValidateThumbDimensions( + data.data.width(), + data.data.height()); + }, [&](const Info::Video &data) { + return true; + }, [](auto &&other) { + return false; + }); + if (!valid) { + Ui::show( + Box(lang(lng_edit_media_album_error)), + LayerOption::KeepOther); return; } }