summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2018-05-14 14:15:04 +0200
committerEirik Aavitsland <eirik.aavitsland@qt.io>2018-05-22 13:15:31 +0000
commit91b21e155cea14449757abdb51c619957975bbe1 (patch)
treed9228aec3dfb76f71615d3829cafe8fd03ef83c4
parentd2c7fd5b196ba8ccdcbbc6da77e74eab7153bf63 (diff)
downloadqtsvg-91b21e155cea14449757abdb51c619957975bbe1.tar.gz
SVG image handler: catch and warn about QImage allocation failure
QImage allocation failure, typically because of out-of-range dimensions, was not immediately caught and reported. This could lead confusing error messages as QPainter would render on a null image. Task-number: QTBUG-68229 Change-Id: If99033244728f1cea635691c6a93564976962f09 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r--src/plugins/imageformats/svg/qsvgiohandler.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/plugins/imageformats/svg/qsvgiohandler.cpp b/src/plugins/imageformats/svg/qsvgiohandler.cpp
index 457c79e..a999d47 100644
--- a/src/plugins/imageformats/svg/qsvgiohandler.cpp
+++ b/src/plugins/imageformats/svg/qsvgiohandler.cpp
@@ -176,8 +176,13 @@ bool QSvgIOHandler::read(QImage *image)
t.translate(tr1.x(), tr1.y());
bounds = t.mapRect(bounds);
}
- if (image->size() != finalSize || !image->reinterpretAsFormat(QImage::Format_ARGB32_Premultiplied))
+ if (image->size() != finalSize || !image->reinterpretAsFormat(QImage::Format_ARGB32_Premultiplied)) {
*image = QImage(finalSize, QImage::Format_ARGB32_Premultiplied);
+ if (!finalSize.isEmpty() && image->isNull()) {
+ qWarning("QSvgIOHandler: QImage allocation failed (size %i x %i)", finalSize.width(), finalSize.height());
+ return false;
+ }
+ }
if (!finalSize.isEmpty()) {
image->fill(d->backColor.rgba());
QPainter p(image);