aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2010-02-06 16:42:15 +0000
committerJohannes Schickel2010-02-06 16:42:15 +0000
commitb431e700d8878b6f6367f4ac15df5080490feb55 (patch)
tree1a40c55681b0235dece6020ac6a06e8c4747f421
parente3d4d5e3793041a189370521d11bc24727da4d31 (diff)
downloadscummvm-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.cpp7
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;