From: Debian Qt/KDE Maintainers Date: Thu, 12 Jan 2023 11:43:32 +0000 (+0000) Subject: fix deletion order in QImageReader/Writer destructors X-Git-Tag: archive/raspbian/5.15.7+dfsg-3+rpi1^2~14 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b7f9e3bfdd58d117deb13728deb82f367a06dac2;p=qtbase-opensource-src.git fix deletion order in QImageReader/Writer destructors Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=f091026be1deb4b4 Last-Update: 2023-01-12 The device would be deleted before the image format handler, and hence be a dangling pointer that could easily cause a crash if the handler or codec would access it on destruction, e.g. for cleanup. Gbp-Pq: Name image_deletion_order.diff --- diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index 5cb7e1328..2e6b364a9 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -515,9 +515,9 @@ QImageReaderPrivate::QImageReaderPrivate(QImageReader *qq) */ QImageReaderPrivate::~QImageReaderPrivate() { + delete handler; if (deleteDevice) delete device; - delete handler; } /*! diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp index 33f5e491c..c4654d18e 100644 --- a/src/gui/image/qimagewriter.cpp +++ b/src/gui/image/qimagewriter.cpp @@ -349,9 +349,9 @@ QImageWriter::QImageWriter(const QString &fileName, const QByteArray &format) */ QImageWriter::~QImageWriter() { + delete d->handler; if (d->deleteDevice) delete d->device; - delete d->handler; delete d; }