From fc74b4e56430ac6aa6c26a10eaa552df3aa34380 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Fri, 10 Jun 2011 11:10:49 +0200 Subject: fix an incorrect OpenMode flags handling in QBuffer::open() which leads to absurd statement (QBuffer::open() == !QBuffer::isOpen()) to be true. also treat Truncate as (Truncate | WriteOnly) to satisfy lazy ones Reviewed-by: Joao Merge-request: 2612 (cherry picked from commit 6b91affb9a355e668bc9d06dee580d95230ac63a) Change-Id: I657d4d0a33f7993313fe2a1a8ba408371991717f Reviewed-on: http://codereview.qt.nokia.com/447 Reviewed-by: Qt Sanity Bot Reviewed-by: Peter Hartmann --- src/corelib/io/qbuffer.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'src/corelib/io/qbuffer.cpp') diff --git a/src/corelib/io/qbuffer.cpp b/src/corelib/io/qbuffer.cpp index 38e406b1a43..35e7b6809cb 100644 --- a/src/corelib/io/qbuffer.cpp +++ b/src/corelib/io/qbuffer.cpp @@ -333,23 +333,18 @@ bool QBuffer::open(OpenMode flags) { Q_D(QBuffer); - if ((flags & Append) == Append) + if ((flags & (Append | Truncate)) != 0) flags |= WriteOnly; - setOpenMode(flags); - if (!(isReadable() || isWritable())) { - qWarning("QFile::open: File access not specified"); + if ((flags & (ReadOnly | WriteOnly)) == 0) { + qWarning("QBuffer::open: Buffer access not specified"); return false; } - if ((flags & QIODevice::Truncate) == QIODevice::Truncate) { + if ((flags & Truncate) == Truncate) d->buf->resize(0); - } - if ((flags & QIODevice::Append) == QIODevice::Append) // append to end of buffer - seek(d->buf->size()); - else - seek(0); + d->ioIndex = (flags & Append) == Append ? d->buf->size() : 0; - return true; + return QIODevice::open(flags); } /*! -- cgit v1.2.3