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>
This commit is contained in:
Eirik Aavitsland 2023-01-10 14:15:26 +01:00
parent ec787ce143
commit 5633cb69f6
2 changed files with 4 additions and 4 deletions

View File

@ -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();
}

View File

@ -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;
}
/*!