From 2bed336599dddd7e7c3cef73107c5ca3e6d6ab27 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 7 Nov 2020 08:05:34 -0800 Subject: QCborStreamReader: move helper function to the only place it's used Simplifies the code a little bit Pick-to: 5.15 6.0 Change-Id: I7b9b97ae9b32412abdc6fffd164545632be4590a Reviewed-by: Allan Sandfeld Jensen --- src/corelib/serialization/qcborstreamreader.cpp | 42 ++++++++++--------------- 1 file changed, 17 insertions(+), 25 deletions(-) (limited to 'src/corelib/serialization') diff --git a/src/corelib/serialization/qcborstreamreader.cpp b/src/corelib/serialization/qcborstreamreader.cpp index f1bea6a1f1..460813cece 100644 --- a/src/corelib/serialization/qcborstreamreader.cpp +++ b/src/corelib/serialization/qcborstreamreader.cpp @@ -647,27 +647,6 @@ public: lastError = QCborError { QCborError::Code(int(err)) }; } - void updateBufferAfterString(qsizetype offset, qsizetype size) - { - Q_ASSERT(device); - - bufferStart += offset; - qsizetype newStart = bufferStart + size; - qsizetype remainingInBuffer = buffer.size() - newStart; - - if (remainingInBuffer <= 0) { - // We've read from the QIODevice more than what was in the buffer. - buffer.truncate(0); - } else { - // There's still data buffered, but we need to move it around. - char *ptr = buffer.data(); - memmove(ptr, ptr + newStart, remainingInBuffer); - buffer.truncate(remainingInBuffer); - } - - bufferStart = 0; - } - struct ReadStringChunk { union { char *ptr; @@ -1558,10 +1537,23 @@ QCborStreamReaderPrivate::readStringChunk(ReadStringChunk params) if (result.data < 0) return result; // error - if (device) - updateBufferAfterString(0, len); - else - bufferStart += len; + // adjust the buffers after we're done reading the string + bufferStart += len; + if (device) { + qsizetype remainingInBuffer = buffer.size() - bufferStart; + + if (remainingInBuffer <= 0) { + // We've read from the QIODevice more than what was in the buffer. + buffer.truncate(0); + } else { + // There's still data buffered, but we need to move it around. + char *ptr = buffer.data(); + memmove(ptr, ptr + bufferStart, remainingInBuffer); + buffer.truncate(remainingInBuffer); + } + + bufferStart = 0; + } preread(); result.status = QCborStreamReader::Ok; -- cgit v1.2.3