From 3b4abd717c5b4ee35bdcac550c66b8fa4d97aeac Mon Sep 17 00:00:00 2001 From: Ahmad Samir Date: Fri, 16 May 2025 16:59:44 +0300 Subject: [PATCH] QNetworkDiskCache: construct a QFile on the stack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The QFile object is only used in its scope: - `remove(url)` indirectly removes the file from the disk cache (by constructing another QFile) then immediately returns - if the file could be read, all the read data is stored in a QBuffer, the QFile isn't needed after that Amends c254d73be63033497838807119cb9cb47ca6c1fa. Change-Id: I714dcc619b8f5ed887f111395967d674ec875d6e Reviewed-by: Marc Mutz Reviewed-by: MÃ¥rten Nordheim (cherry picked from commit b9c92154062a1d6c0f62860a9fa775cba6bac9ef) Reviewed-by: Qt Cherry-pick Bot --- src/network/access/qnetworkdiskcache.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp index 69e35cea279..0f973b02b98 100644 --- a/src/network/access/qnetworkdiskcache.cpp +++ b/src/network/access/qnetworkdiskcache.cpp @@ -6,7 +6,6 @@ #include "qnetworkdiskcache.h" #include "qnetworkdiskcache_p.h" -#include "QtCore/qscopedpointer.h" #include #include @@ -359,12 +358,12 @@ QIODevice *QNetworkDiskCache::data(const QUrl &url) buffer.reset(new QBuffer); buffer->setData(d->lastItem.data.data()); } else { - QScopedPointer file(new QFile(d->cacheFileName(url))); - if (!file->open(QFile::ReadOnly | QIODevice::Unbuffered)) + QFile file(d->cacheFileName(url)); + if (!file.open(QFile::ReadOnly | QIODevice::Unbuffered)) return nullptr; - if (!d->lastItem.read(file.data(), true)) { - file->close(); + if (!d->lastItem.read(&file, true)) { + file.close(); // On Windows the file can't be removed if it's open remove(url); return nullptr; } @@ -374,7 +373,7 @@ QIODevice *QNetworkDiskCache::data(const QUrl &url) buffer->setData(d->lastItem.data.data()); } else { buffer.reset(new QBuffer); - buffer->setData(file->readAll()); + buffer->setData(file.readAll()); } } buffer->open(QBuffer::ReadOnly);