diff options
author | Johannes Schickel | 2010-02-06 16:42:15 +0000 |
---|---|---|
committer | Johannes Schickel | 2010-02-06 16:42:15 +0000 |
commit | b431e700d8878b6f6367f4ac15df5080490feb55 (patch) | |
tree | 1a40c55681b0235dece6020ac6a06e8c4747f421 | |
parent | e3d4d5e3793041a189370521d11bc24727da4d31 (diff) | |
download | scummvm-rg350-b431e700d8878b6f6367f4ac15df5080490feb55.tar.gz scummvm-rg350-b431e700d8878b6f6367f4ac15df5080490feb55.tar.bz2 scummvm-rg350-b431e700d8878b6f6367f4ac15df5080490feb55.zip |
Fix bug in LoopingAudioStream::readBuffer, this makes the unit tests complete without any error.
svn-id: r47935
-rw-r--r-- | sound/audiostream.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sound/audiostream.cpp b/sound/audiostream.cpp index 4e5fe4562b..763b8eb887 100644 --- a/sound/audiostream.cpp +++ b/sound/audiostream.cpp @@ -104,6 +104,9 @@ LoopingAudioStream::~LoopingAudioStream() { } int LoopingAudioStream::readBuffer(int16 *buffer, const int numSamples) { + if ((_loops && _completeIterations == _loops) || !numSamples) + return 0; + int samplesRead = _parent->readBuffer(buffer, numSamples); if (_parent->endOfStream()) { @@ -111,7 +114,7 @@ int LoopingAudioStream::readBuffer(int16 *buffer, const int numSamples) { if (_completeIterations == _loops) return samplesRead; - int remainingSamples = numSamples - samplesRead; + const int remainingSamples = numSamples - samplesRead; if (!_parent->rewind()) { // TODO: Properly indicate error @@ -119,7 +122,7 @@ int LoopingAudioStream::readBuffer(int16 *buffer, const int numSamples) { return samplesRead; } - samplesRead += _parent->readBuffer(buffer + samplesRead, remainingSamples); + return samplesRead + readBuffer(buffer + samplesRead, remainingSamples); } return samplesRead; |