diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp index 185a620a5ff..5896b8408d0 100644 --- a/src/corelib/serialization/qdatastream.cpp +++ b/src/corelib/serialization/qdatastream.cpp @@ -1116,6 +1116,7 @@ QDataStream &QDataStream::readBytes(char *&s, qint64 &l) char *prevBuf = nullptr; char *curBuf = nullptr; + constexpr qsizetype StepIncreaseThreshold = std::numeric_limits::max() / 2; do { qsizetype blockSize = qMin(step, len - allocated); prevBuf = curBuf; @@ -1129,7 +1130,8 @@ QDataStream &QDataStream::readBytes(char *&s, qint64 &l) return *this; } allocated += blockSize; - step *= 2; + if (step <= StepIncreaseThreshold) + step *= 2; } while (allocated < len); s = curBuf;