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. Change-Id: I714dcc619b8f5ed887f111395967d674ec875d6e Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit b9c92154062a1d6c0f62860a9fa775cba6bac9ef) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
b4ac56aa3a
commit
3b4abd717c
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user