summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/io/qfile.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index 22b8ae5d2d..dc926caa1f 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -902,12 +902,12 @@ bool QFile::open(FILE *fh, OpenMode mode, FileHandleFlags handleFlags)
}
if (d->openExternalFile(mode, fh, handleFlags)) {
QIODevice::open(mode);
- if (mode & Append) {
- seek(size());
- } else {
+ if (!(mode & Append) && !isSequential()) {
qint64 pos = (qint64)QT_FTELL(fh);
- if (pos != -1)
- seek(pos);
+ if (pos != -1) {
+ // Skip redundant checks in QFileDevice::seek().
+ QIODevice::seek(pos);
+ }
}
return true;
}
@@ -960,12 +960,12 @@ bool QFile::open(int fd, OpenMode mode, FileHandleFlags handleFlags)
}
if (d->openExternalFile(mode, fd, handleFlags)) {
QIODevice::open(mode);
- if (mode & Append) {
- seek(size());
- } else {
+ if (!(mode & Append) && !isSequential()) {
qint64 pos = (qint64)QT_LSEEK(fd, QT_OFF_T(0), SEEK_CUR);
- if (pos != -1)
- seek(pos);
+ if (pos != -1) {
+ // Skip redundant checks in QFileDevice::seek().
+ QIODevice::seek(pos);
+ }
}
return true;
}