diff options
author | Eike Ziller <eike.ziller@qt.io> | 2022-03-11 09:50:48 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2022-03-11 09:50:48 +0100 |
commit | cd8c4ced811a8d022d3e244a482a4a3bbc513d83 (patch) | |
tree | e97b1cbe66c015b3f7b75ef265b25bf38ead9562 /src/plugins/imageviewer | |
parent | a863958aa4b27ab477a1926635accd681938adb7 (diff) | |
parent | 2829412e154935aea563862254ea5aa64941210f (diff) | |
download | qt-creator-cd8c4ced811a8d022d3e244a482a4a3bbc513d83.tar.gz |
Merge remote-tracking branch 'origin/7.0'
Conflicts:
cmake/QtCreatorIDEBranding.cmake
qbs/modules/qtc/qtc.qbs
qtcreator_ide_branding.pri
Change-Id: Ic02df53b880d0861d9d9ea0df3e0d381ae99f350
Diffstat (limited to 'src/plugins/imageviewer')
-rw-r--r-- | src/plugins/imageviewer/imageviewerfile.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/plugins/imageviewer/imageviewerfile.cpp b/src/plugins/imageviewer/imageviewerfile.cpp index 0fb4e22a10..0133cce05c 100644 --- a/src/plugins/imageviewer/imageviewerfile.cpp +++ b/src/plugins/imageviewer/imageviewerfile.cpp @@ -111,7 +111,7 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, if (format.startsWith("svg")) { m_tempSvgItem = new QGraphicsSvgItem(fileName); QRectF bound = m_tempSvgItem->boundingRect(); - if (qFuzzyIsNull(bound.width()) && qFuzzyIsNull(bound.height())) { + if (!bound.isValid() || (qFuzzyIsNull(bound.width()) && qFuzzyIsNull(bound.height()))) { delete m_tempSvgItem; m_tempSvgItem = nullptr; if (errorString) @@ -123,8 +123,17 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, } else #endif if (QMovie::supportedFormats().contains(format)) { - m_type = TypeMovie; m_movie = new QMovie(fileName, QByteArray(), this); + // force reading movie/image data, so we can catch completely invalid movies/images early: + m_movie->jumpToNextFrame(); + if (!m_movie->isValid()) { + if (errorString) + *errorString = tr("Failed to read image."); + delete m_movie; + m_movie = nullptr; + return OpenResult::CannotHandle; + } + m_type = TypeMovie; m_movie->setCacheMode(QMovie::CacheAll); connect( m_movie, |