Limit the sequential bytes skipping to a max 16kB at a time.
Otherwise QIODevice::read will try and allocate whatever junk is passed in, so a corrupt chunk can result in 1GB+ allocations which are never actually used. Change-Id: I1ea4a5c1a5d21b1ee6f7e428105c52c0ee6ca7f7 Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
4be55afa6c
commit
cbb21e30d5
@@ -290,7 +290,7 @@ void QWaveDecoder::discardBytes(qint64 numBytes)
|
||||
// If the iodevice doesn't have this many bytes in it,
|
||||
// remember how much more junk we have to skip.
|
||||
if (source->isSequential()) {
|
||||
QByteArray r = source->read(numBytes); // uggh, wasted memory
|
||||
QByteArray r = source->read(qMin(numBytes, qint64(16384))); // uggh, wasted memory, limit to a max of 16k
|
||||
if (r.size() < numBytes)
|
||||
junkToSkip = numBytes - r.size();
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user