-
Bug
-
Resolution: Incomplete
-
Not Evaluated
-
None
-
5.4.0
-
None
When reimplementing QIODevice for sequential devices with highly loaded output stream, method readAll() may call long loop in code:
if (d->isSequential() || (theSize = size()) == 0) {
// Size is unknown, read incrementally.
qint64 readResult;
do {
result.resize(result.size() + QIODEVICE_BUFFERSIZE);
readResult = read(result.data() + readBytes, result.size() - readBytes);
if (readResult > 0 || readBytes == 0)
readBytes += readResult;
} while (readResult > 0);
}
As example when QIODevice::readData() makes a JNI call to InputStream.read() on Android Bluetooth system.
May be need to insert
if (result.size() != readBytes) break;
to end of loop?