diff options
author | Eugene Sandulenko | 2005-09-22 20:45:46 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2005-09-22 20:45:46 +0000 |
commit | 2b1d4ef990c0a822da7838aa3261bbb7f48b2fba (patch) | |
tree | 36a49c669954befe3ee7b3cd054eea5d7111564a | |
parent | 2ff735ff094b25423ae0ad175e63063440150cf3 (diff) | |
download | scummvm-rg350-2b1d4ef990c0a822da7838aa3261bbb7f48b2fba.tar.gz scummvm-rg350-2b1d4ef990c0a822da7838aa3261bbb7f48b2fba.tar.bz2 scummvm-rg350-2b1d4ef990c0a822da7838aa3261bbb7f48b2fba.zip |
Fix regression caused by recent code cleanup. Each input byte should be
processed twice, so even if stream end is reached, there should be another
iteration. Otherwise it always returned one byte less than expected.
svn-id: r18859
-rw-r--r-- | sound/adpcm.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/adpcm.cpp b/sound/adpcm.cpp index 80bbbe4fdc..b38cca36e3 100644 --- a/sound/adpcm.cpp +++ b/sound/adpcm.cpp @@ -72,7 +72,9 @@ template <typesADPCM TYPE> int ADPCMInputStream<TYPE>::readBuffer(int16 *buffer, const int numSamples) { int samples; - for (samples = 0; samples < numSamples && !_stream->eos() && _stream->pos() < _endpos; samples++) { + // Since we process high and low nibbles separately never check buffer end + // on low nibble + for (samples = 0; !_evenPos || samples < numSamples && !_stream->eos() && _stream->pos() < _endpos; samples++) { if (_evenPos) { _lastByte = _stream->readByte(); buffer[samples] = decode((_lastByte >> 4) & 0x0f); |