summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2023-01-10 14:15:26 +0100
committerEirik Aavitsland <eirik.aavitsland@qt.io>2023-01-11 19:36:26 +0100
commit5633cb69f68ca3d3b82476f9025d863f804e76c1 (patch)
treea660d8ccf1e3c07a2ddab5c65bc22a269cc4fce5
parentec787ce14363c843f9c1149bad8045ff6acbcf1c (diff)
Fix deletion order also for QImageReader/Writer::setDevice()
Avoid dangling or incorrect device pointer during handler destruction. This was recently fixed in the destructors, fixed here also for the setDevice() functions. Pick-to: 6.5 6.4 6.2 5.15 Change-Id: I85b64726cd88d2c8e63eee59d5b4f2ae488df61b Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
-rw-r--r--src/gui/image/qimagereader.cpp4
-rw-r--r--src/gui/image/qimagewriter.cpp4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp
index a91805c3f3..e943559ffd 100644
--- a/src/gui/image/qimagereader.cpp
+++ b/src/gui/image/qimagereader.cpp
@@ -746,12 +746,12 @@ bool QImageReader::decideFormatFromContent() const
*/
void QImageReader::setDevice(QIODevice *device)
{
+ delete d->handler;
+ d->handler = nullptr;
if (d->device && d->deleteDevice)
delete d->device;
d->device = device;
d->deleteDevice = false;
- delete d->handler;
- d->handler = nullptr;
d->text.clear();
}
diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp
index 9a2ba85afd..ae8db3d3b5 100644
--- a/src/gui/image/qimagewriter.cpp
+++ b/src/gui/image/qimagewriter.cpp
@@ -362,13 +362,13 @@ QByteArray QImageWriter::format() const
*/
void QImageWriter::setDevice(QIODevice *device)
{
+ delete d->handler;
+ d->handler = nullptr;
if (d->device && d->deleteDevice)
delete d->device;
d->device = device;
d->deleteDevice = false;
- delete d->handler;
- d->handler = nullptr;
}
/*!