summaryrefslogtreecommitdiff
path: root/src/plugins/imageviewer
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2022-03-11 09:50:48 +0100
committerEike Ziller <eike.ziller@qt.io>2022-03-11 09:50:48 +0100
commitcd8c4ced811a8d022d3e244a482a4a3bbc513d83 (patch)
treee97b1cbe66c015b3f7b75ef265b25bf38ead9562 /src/plugins/imageviewer
parenta863958aa4b27ab477a1926635accd681938adb7 (diff)
parent2829412e154935aea563862254ea5aa64941210f (diff)
downloadqt-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.cpp13
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,