OSDN Git Service

read all data from input QByteArray data stream at once
authorIvailo Monev <xakepa10@laimg.moc>
Wed, 4 Dec 2019 22:16:35 +0000 (22:16 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Wed, 4 Dec 2019 22:16:35 +0000 (22:16 +0000)
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
src/core/tools/qbytearray.cpp

index 0961cf1..72598ff 100644 (file)
@@ -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;
 }