summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfiledevice.cpp
diff options
context:
space:
mode:
authorAleksey Lysenko <lysenkoalexmail@gmail.com>2017-01-30 22:55:57 +0200
committerAleksey Lysenko <lysenkoalexmail@gmail.com>2017-02-06 07:36:24 +0000
commitf53ab9d7363e2fb3b63cec1a00851f84f901de18 (patch)
tree0fc143df717e58e5d5cf7a01b86e813cee63c84e /src/corelib/io/qfiledevice.cpp
parent5923fb966d3d869b23f74bc43560b08921f4321b (diff)
Reset QFileDevicePrivate::cachedSize on file close
When a QFile object is reused, the atEnd() method may return incorrect values. The reason for this is that QFileDevicePrivate::cachedSize is not cleared. Setting cachedSize = 0 in the close() method fixes this issue. Task-number: QTBUG-57698 Change-Id: I828a2cf844e98d581098f2c781fa47d2cd3275ce Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/io/qfiledevice.cpp')
-rw-r--r--src/corelib/io/qfiledevice.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/corelib/io/qfiledevice.cpp b/src/corelib/io/qfiledevice.cpp
index 20cfa5bdaf..ce9c8275ce 100644
--- a/src/corelib/io/qfiledevice.cpp
+++ b/src/corelib/io/qfiledevice.cpp
@@ -328,6 +328,9 @@ void QFileDevice::close()
d->lastWasWrite = false;
d->writeBuffer.clear();
+ // reset cached size
+ d->cachedSize = 0;
+
// keep earlier error from flush
if (d->fileEngine->close() && flushed)
unsetError();