summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@theqtcompany.com>2015-02-25 15:39:41 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-02-26 01:27:37 +0000
commit68762151dbf45fbb44e140ac2ad13dbe8d357352 (patch)
treed0c753d15d9ebc44db5a7f12013f82f4f27d4e69 /tests
parenta659b4e56be9721389d28e212b4f4bcd393e6410 (diff)
Fix crash when converting format of QImage created from buffer
When doing format conversion, the optimized inplace codepath did not check if the image data was readonly, i.e. if the QImage had been created by the constructor taking an existing external buffer. Task-number: QTBUG-44610 Change-Id: I085ff8da427bc4ee392f548dffd2418b63148965 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/gui/image/qimage/tst_qimage.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp
index ed1d915670..e8da3263ae 100644
--- a/tests/auto/gui/image/qimage/tst_qimage.cpp
+++ b/tests/auto/gui/image/qimage/tst_qimage.cpp
@@ -2492,6 +2492,19 @@ void tst_QImage::inplaceConversion()
}
if (image.depth() == imageConverted.depth())
QCOMPARE(imageConverted.constScanLine(0), originalPtr);
+
+ {
+ // Test attempted inplace conversion of images created on existing, readonly buffer
+ static const quint32 readOnlyData[] = { 0x00010203U, 0x04050607U, 0x08091011U, 0x12131415U };
+
+ QImage roImage((const uchar *)readOnlyData, 2, 2, format);
+ QImage inplaceConverted = std::move(roImage).convertToFormat(dest_format);
+
+ QImage roImage2((const uchar *)readOnlyData, 2, 2, format);
+ QImage normalConverted = roImage2.convertToFormat(dest_format);
+
+ QCOMPARE(normalConverted, inplaceConverted);
+ }
#endif
}