diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-08-14 10:29:21 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-08-14 10:57:13 +0200 |
commit | 8bd48a1c335b404ebbeb7c09c859e0715e6b5cd4 (patch) | |
tree | d30f06628e7027ecc2e7a5761312c92dca319342 | |
parent | b5677bc6da9c5e7517edc4902dc1fe7cf211685d (diff) |
Fix crash in optimized solid fills on RGBA64PM
Was expecting destStore64 to be non-null.
Change-Id: I4fc827256630a35e0669d405c04f9b5b7e71580e
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
-rw-r--r-- | src/gui/painting/qdrawhelper.cpp | 2 | ||||
-rw-r--r-- | tests/auto/other/lancelot/tst_lancelot.cpp | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 36fb091ff8..533ad39b86 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -4491,7 +4491,7 @@ void blend_color_generic_rgb64(int count, const QSpan *spans, void *userData) while (count--) { int x = spans->x; int length = spans->len; - if (solidFill && bpp >= QPixelLayout::BPP8 && spans->coverage == 255 && length) { + if (solidFill && bpp >= QPixelLayout::BPP8 && spans->coverage == 255 && length && op.destStore64) { // If dest doesn't matter we don't need to bother with blending or converting all the identical pixels op.destStore64(data->rasterBuffer, x, spans->y, &color, 1); spanfill_from_first(data->rasterBuffer, bpp, x, spans->y, length); diff --git a/tests/auto/other/lancelot/tst_lancelot.cpp b/tests/auto/other/lancelot/tst_lancelot.cpp index 15267d256e..ba04802a26 100644 --- a/tests/auto/other/lancelot/tst_lancelot.cpp +++ b/tests/auto/other/lancelot/tst_lancelot.cpp @@ -85,6 +85,8 @@ private slots: void testRasterARGB8565PM(); void testRasterGrayscale8_data(); void testRasterGrayscale8(); + void testRasterRGBA64PM_data(); + void testRasterRGBA64PM(); #ifndef QT_NO_OPENGL void testOpenGL_data(); @@ -226,6 +228,17 @@ void tst_Lancelot::testRasterGrayscale8() } +void tst_Lancelot::testRasterRGBA64PM_data() +{ + setupTestSuite(); +} + +void tst_Lancelot::testRasterRGBA64PM() +{ + runTestSuite(Raster, QImage::Format_RGBA64_Premultiplied); +} + + #ifndef QT_NO_OPENGL bool tst_Lancelot::checkSystemGLSupport() { |