diff options
Diffstat (limited to 'src/multimedia/audio/qwavedecoder_p.cpp')
-rw-r--r-- | src/multimedia/audio/qwavedecoder_p.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/multimedia/audio/qwavedecoder_p.cpp b/src/multimedia/audio/qwavedecoder_p.cpp index 4b036b201..b75bfaf8f 100644 --- a/src/multimedia/audio/qwavedecoder_p.cpp +++ b/src/multimedia/audio/qwavedecoder_p.cpp @@ -153,13 +153,15 @@ void QWaveDecoder::handleData() chunk descriptor; peekChunk(&descriptor); - if (source->bytesAvailable() < qint64(descriptor.size + sizeof(chunk))) + quint32 rawChunkSize = descriptor.size + sizeof(chunk); + if (source->bytesAvailable() < qint64(rawChunkSize)) return; WAVEHeader wave; source->read(reinterpret_cast<char *>(&wave), sizeof(WAVEHeader)); - if (descriptor.size > sizeof(WAVEHeader)) - discardBytes(descriptor.size - sizeof(WAVEHeader)); + + if (rawChunkSize > sizeof(WAVEHeader)) + discardBytes(rawChunkSize - sizeof(WAVEHeader)); // Swizzle this if (bigEndian) { |