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 <paul.tvete@qt.io>
(cherry picked from commit 5633cb69f68ca3d3b82476f9025d863f804e76c1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Eirik Aavitsland 2023-01-10 14:15:26 +01:00 committed by Qt Cherry-pick Bot
parent 3f7a73adb5
commit 47b3f967d6
2 changed files with 4 additions and 4 deletions

View File

@ -746,12 +746,12 @@ bool QImageReader::decideFormatFromContent() const
*/ */
void QImageReader::setDevice(QIODevice *device) void QImageReader::setDevice(QIODevice *device)
{ {
delete d->handler;
d->handler = nullptr;
if (d->device && d->deleteDevice) if (d->device && d->deleteDevice)
delete d->device; delete d->device;
d->device = device; d->device = device;
d->deleteDevice = false; d->deleteDevice = false;
delete d->handler;
d->handler = nullptr;
d->text.clear(); d->text.clear();
} }

View File

@ -362,13 +362,13 @@ QByteArray QImageWriter::format() const
*/ */
void QImageWriter::setDevice(QIODevice *device) void QImageWriter::setDevice(QIODevice *device)
{ {
delete d->handler;
d->handler = nullptr;
if (d->device && d->deleteDevice) if (d->device && d->deleteDevice)
delete d->device; delete d->device;
d->device = device; d->device = device;
d->deleteDevice = false; d->deleteDevice = false;
delete d->handler;
d->handler = nullptr;
} }
/*! /*!