From 5ed602eaeb1e380aad4f3476b8076fc3fb31a2fd Mon Sep 17 00:00:00 2001 From: Eirik Aavitsland Date: Tue, 10 Jan 2023 14:15:26 +0100 Subject: [PATCH] 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. Change-Id: I85b64726cd88d2c8e63eee59d5b4f2ae488df61b Reviewed-by: Paul Olav Tvete (cherry picked from commit 5633cb69f68ca3d3b82476f9025d863f804e76c1) Reviewed-by: Qt Cherry-pick Bot --- src/gui/image/qimagereader.cpp | 4 ++-- src/gui/image/qimagewriter.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index 25bdffdb06d..2f5b88b18d4 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -778,12 +778,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 868a1807518..fe0b6452edb 100644 --- a/src/gui/image/qimagewriter.cpp +++ b/src/gui/image/qimagewriter.cpp @@ -396,13 +396,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; } /*!