From 27b560373d2919d68ccea79f5a0b928f4a14c9cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Wed, 12 Jan 2022 23:19:16 +0100 Subject: QImageReader: Check for existing handler in initHandler Some calling code did this beforehand, other didn't. Now, the function itself checks for an existing handler before doing anything else. Change-Id: I8fc43fb8788c9dfe825b15ffa2fa69ee43915cd6 Reviewed-by: Qt CI Bot Reviewed-by: Eirik Aavitsland --- src/gui/image/qimagereader.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/gui/image') diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index dbfcb4ee8c..940f87af9a 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -529,6 +529,9 @@ QImageReaderPrivate::~QImageReaderPrivate() */ bool QImageReaderPrivate::initHandler() { + if (handler) + return true; + // check some preconditions if (!device || (!deleteDevice && !device->isOpen() && !device->open(QIODevice::ReadOnly))) { imageReaderError = QImageReader::DeviceError; @@ -575,7 +578,7 @@ bool QImageReaderPrivate::initHandler() } // assign a handler - if (!handler && (handler = createReadHandlerHelper(device, format, autoDetectImageFormat, ignoresFormatAndExtension)) == nullptr) { + if ((handler = createReadHandlerHelper(device, format, autoDetectImageFormat, ignoresFormatAndExtension)) == nullptr) { imageReaderError = QImageReader::UnsupportedFormatError; errorString = QImageReader::tr("Unsupported image format"); return false; @@ -588,7 +591,7 @@ bool QImageReaderPrivate::initHandler() */ void QImageReaderPrivate::getText() { - if (text.isEmpty() && (handler || initHandler()) && handler->supportsOption(QImageIOHandler::Description)) + if (text.isEmpty() && initHandler() && handler->supportsOption(QImageIOHandler::Description)) text = qt_getImageTextFromDescription(handler->option(QImageIOHandler::Description).toString()); } @@ -1223,7 +1226,7 @@ bool QImageReader::read(QImage *image) return false; } - if (!d->handler && !d->initHandler()) + if (!d->initHandler()) return false; // set the handler specific options. -- cgit v1.2.3