diff options
author | Ahmad Samir <[email protected]> | 2025-05-16 16:59:44 +0300 |
---|---|---|
committer | Marc Mutz <[email protected]> | 2025-05-22 07:14:30 +0000 |
commit | b9c92154062a1d6c0f62860a9fa775cba6bac9ef (patch) | |
tree | 08f77006e94701ce297522d5f300b2935437b4df | |
parent | 66803a863ec58852617978733790a45a7c86e0fc (diff) |
QNetworkDiskCache: construct a QFile on the stack
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.
Pick-to: 6.9
Change-Id: I714dcc619b8f5ed887f111395967d674ec875d6e
Reviewed-by: Marc Mutz <[email protected]>
Reviewed-by: MÃ¥rten Nordheim <[email protected]>
-rw-r--r-- | src/network/access/qnetworkdiskcache.cpp | 11 |
1 files 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 <qfile.h> #include <qdir.h> @@ -359,12 +358,12 @@ QIODevice *QNetworkDiskCache::data(const QUrl &url) buffer.reset(new QBuffer); buffer->setData(d->lastItem.data.data()); } else { - QScopedPointer<QFile> 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); |