diff options
author | Mitch Curtis <mitch.curtis@nokia.com> | 2012-05-29 12:01:24 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-05 13:12:58 +0200 |
commit | 05d980664fd3958add575712faf2abbb12b20857 (patch) | |
tree | def40e2aa7c95f5247f1374d4e938008823b770b /src/corelib/io/qiodevice.cpp | |
parent | bf84d1a1fe1550fb7cb86d686bf0138c1c41e87b (diff) |
Make QIODevice::seek() return false for sequential files.
Task-number: QTBUG-18173
Change-Id: Ie3a96d3a6f60995b8ba7823153778869d0c2dc58
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Diffstat (limited to 'src/corelib/io/qiodevice.cpp')
-rw-r--r-- | src/corelib/io/qiodevice.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 3c2da7fa85..03bf59ed9d 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -606,18 +606,22 @@ qint64 QIODevice::size() const /*! For random-access devices, this function sets the current position to \a pos, returning true on success, or false if an error occurred. - For sequential devices, the default behavior is to do nothing and - return false. + For sequential devices, the default behavior is to produce a warning + and return false. When subclassing QIODevice, you must call QIODevice::seek() at the start of your function to ensure integrity with QIODevice's - built-in buffer. The base implementation always returns true. + built-in buffer. \sa pos(), isSequential() */ bool QIODevice::seek(qint64 pos) { Q_D(QIODevice); + if (d->isSequential()) { + qWarning("QIODevice::seek: Cannot call seek on a sequential device"); + return false; + } if (d->openMode == NotOpen) { qWarning("QIODevice::seek: The device is not open"); return false; @@ -633,10 +637,8 @@ bool QIODevice::seek(qint64 pos) #endif qint64 offset = pos - d->pos; - if (!d->isSequential()) { - d->pos = pos; - d->devicePos = pos; - } + d->pos = pos; + d->devicePos = pos; if (offset < 0 || offset >= qint64(d->buffer.size())) |