From e424d2885021cffbdc852fbdabf2e12336cfb233 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 4 Dec 2019 22:16:35 +0000 Subject: [PATCH] read all data from input QByteArray data stream at once Signed-off-by: Ivailo Monev --- src/core/tools/qbytearray.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/core/tools/qbytearray.cpp b/src/core/tools/qbytearray.cpp index 0961cf120..72598fff1 100644 --- a/src/core/tools/qbytearray.cpp +++ b/src/core/tools/qbytearray.cpp @@ -2819,19 +2819,11 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba) if (len == 0xffffffff) return in; - const quint32 Step = 1024 * 1024; - quint32 allocated = 0; - - do { - int blockSize = qMin(Step, len - allocated); - ba.resize(allocated + blockSize); - if (in.readRawData(ba.data() + allocated, blockSize) != blockSize) { - ba.clear(); - in.setStatus(QDataStream::ReadPastEnd); - return in; - } - allocated += blockSize; - } while (allocated < len); + ba.resize(len); + if (in.readRawData(ba.data(), len) != len) { + ba.clear(); + in.setStatus(QDataStream::ReadCorruptData); + } return in; }