From 132f127f3fc78b32cb204338dd3b24cdaea18543 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 24 Sep 2021 08:44:22 +0400 Subject: [PATCH] Add some assertions to debug a crash. --- .../editor/photo_editor_common.cpp | 2 ++ .../storage/storage_media_prepare.cpp | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Telegram/SourceFiles/editor/photo_editor_common.cpp b/Telegram/SourceFiles/editor/photo_editor_common.cpp index 3d9b94427..4caa14e83 100644 --- a/Telegram/SourceFiles/editor/photo_editor_common.cpp +++ b/Telegram/SourceFiles/editor/photo_editor_common.cpp @@ -12,6 +12,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Editor { QImage ImageModified(QImage image, const PhotoModifications &mods) { + Expects(!image.isNull()); + if (!mods) { return image; } diff --git a/Telegram/SourceFiles/storage/storage_media_prepare.cpp b/Telegram/SourceFiles/storage/storage_media_prepare.cpp index a52010fee..bcd583d70 100644 --- a/Telegram/SourceFiles/storage/storage_media_prepare.cpp +++ b/Telegram/SourceFiles/storage/storage_media_prepare.cpp @@ -40,6 +40,8 @@ bool HasExtensionFrom(const QString &file, const QStringList &extensions) { bool ValidPhotoForAlbum( const Image &image, const QString &mime) { + Expects(!image.data.isNull()); + if (image.animated || Core::IsMimeSticker(mime) || (!mime.isEmpty() && !mime.startsWith(u"image/"))) { @@ -228,6 +230,8 @@ PreparedList PrepareMediaFromImage( QImage &&image, QByteArray &&content, int previewWidth) { + Expects(!image.isNull()); + auto result = PreparedList(); auto file = PreparedFile(QString()); file.content = content; @@ -288,6 +292,7 @@ void PrepareDetails(PreparedFile &file, int previewWidth) { using Song = PreparedFileInformation::Song; if (const auto image = std::get_if( &file.information->media)) { + Assert(!image->data.isNull()); if (ValidPhotoForAlbum(*image, file.information->filemime)) { UpdateImageDetails(file, previewWidth); file.type = PreparedFile::Type::Photo; @@ -317,14 +322,18 @@ void UpdateImageDetails(PreparedFile &file, int previewWidth) { if (!image) { return; } - const auto &preview = image->modifications + Assert(!image->data.isNull()); + auto preview = image->modifications ? Editor::ImageModified(image->data, image->modifications) : image->data; + Assert(!preview.isNull()); file.shownDimensions = PrepareShownDimensions(preview); - file.preview = Images::prepareOpaque(preview.scaledToWidth( - std::min(previewWidth, style::ConvertScale(preview.width())) - * cIntRetinaFactor(), - Qt::SmoothTransformation)); + const auto scaled = preview.scaledToWidth( + (std::min(previewWidth, style::ConvertScale(preview.width())) + * cIntRetinaFactor()), + Qt::SmoothTransformation); + Assert(!scaled.isNull()); + file.preview = Images::prepareOpaque(scaled); Assert(!file.preview.isNull()); file.preview.setDevicePixelRatio(cRetinaFactor()); }