From 11aaff3a57afe7a8ff37bfa83cc545cc04c38649 Mon Sep 17 00:00:00 2001 From: David Faure Date: Wed, 11 Jun 2014 11:48:36 +0200 Subject: [PATCH] Add missing detach() in QPixmap::convertFromImage() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-18519 Change-Id: I5d929cf6eda3f34130314edac95487fb00a95db5 Reviewed-by: Jędrzej Nowacki Reviewed-by: Friedemann Kleint --- src/gui/image/qpixmap.cpp | 1 + tests/auto/gui/image/qpixmap/tst_qpixmap.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index 86c4dfbdca..c6d8d19bb1 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -1098,6 +1098,7 @@ bool QPixmap::isDetached() const */ bool QPixmap::convertFromImage(const QImage &image, Qt::ImageConversionFlags flags) { + detach(); if (image.isNull() || !data) *this = QPixmap::fromImage(image, flags); else diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp index 79dc3f311a..b9d0adcd21 100644 --- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp +++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp @@ -91,6 +91,7 @@ private slots: void convertFromImage_data(); void convertFromImage(); + void convertFromImageShouldDetach(); void testMetrics(); @@ -343,6 +344,20 @@ void tst_QPixmap::convertFromImage() QCOMPARE(pix, res); } +void tst_QPixmap::convertFromImageShouldDetach() +{ + const QString prefix = QFINDTESTDATA("convertFromImage"); + QImage img1; + QImage img2; + QVERIFY(img1.load(prefix + "/task31722_0/img1.png")); + QVERIFY(img2.load(prefix + "/task31722_0/img2.png")); + QPixmap pix = QPixmap::fromImage(img1); + QPixmap pix1 = pix; + pix.convertFromImage(img2); + QCOMPARE(pix, QPixmap::fromImage(img2)); + QCOMPARE(pix1, QPixmap::fromImage(img1)); // unchanged +} + void tst_QPixmap::scroll_data() { QTest::addColumn("input");