From f53ab9d7363e2fb3b63cec1a00851f84f901de18 Mon Sep 17 00:00:00 2001 From: Aleksey Lysenko Date: Mon, 30 Jan 2017 22:55:57 +0200 Subject: 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 Reviewed-by: Oswald Buddenhagen Reviewed-by: Lars Knoll --- src/corelib/io/qfiledevice.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/corelib/io/qfiledevice.cpp') 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(); -- cgit v1.2.3