read all data from input QByteArray data stream at once

Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
This commit is contained in:
Ivailo Monev 2019-12-04 22:16:35 +00:00
parent 975e1d7b88
commit e424d28850

View 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;
}