aboutsummaryrefslogtreecommitdiff
path: root/engines/saga
diff options
context:
space:
mode:
authorJohannes Schickel2010-01-10 15:23:35 +0000
committerJohannes Schickel2010-01-10 15:23:35 +0000
commit0447a7f9f8850d209c5820fa7ee5350b54d96f76 (patch)
tree3175bb742e2d51fcd1713f2a7eb974c1ff882104 /engines/saga
parent6ca0570fe3bb3f3765677ff8cd3f9e0cbf062d6b (diff)
downloadscummvm-rg350-0447a7f9f8850d209c5820fa7ee5350b54d96f76.tar.gz
scummvm-rg350-0447a7f9f8850d209c5820fa7ee5350b54d96f76.tar.bz2
scummvm-rg350-0447a7f9f8850d209c5820fa7ee5350b54d96f76.zip
Fix a memory leak.
svn-id: r47227
Diffstat (limited to 'engines/saga')
-rw-r--r--engines/saga/music.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp
index 7fe8c0dbb2..52befa3dd3 100644
--- a/engines/saga/music.cpp
+++ b/engines/saga/music.cpp
@@ -305,13 +305,10 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
if (!_digitalMusicContext->isCompressed()) {
byte musicFlags = Audio::Mixer::FLAG_AUTOFREE | Audio::Mixer::FLAG_STEREO |
Audio::Mixer::FLAG_16BITS | Audio::Mixer::FLAG_LITTLE_ENDIAN;
- if (flags == MUSIC_LOOP)
- musicFlags |= Audio::Mixer::FLAG_LOOP;
-
Audio::LinearDiskStreamAudioBlock audioBlocks[1];
audioBlocks[0].pos = 0;
audioBlocks[0].len = resData->size / 2; // 16-bit sound
- audioStream = Audio::makeLinearDiskStream(musicStream, audioBlocks, 1, 11025, musicFlags, false);
+ audioStream = Audio::makeLinearDiskStream(musicStream, audioBlocks, 1, 11025, musicFlags, true);
} else {
// Read compressed header to determine compression type
musicFile->seek((uint32)resData->offset, SEEK_SET);
@@ -319,18 +316,21 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
if (identifier == 0) { // MP3
#ifdef USE_MAD
- audioStream = Audio::makeMP3Stream(musicStream, false);
+ audioStream = Audio::makeMP3Stream(musicStream, true);
#endif
} else if (identifier == 1) { // OGG
#ifdef USE_VORBIS
- audioStream = Audio::makeVorbisStream(musicStream, false);
+ audioStream = Audio::makeVorbisStream(musicStream, true);
#endif
} else if (identifier == 2) { // FLAC
#ifdef USE_FLAC
- audioStream = Audio::makeFlacStream(musicStream, false);
+ audioStream = Audio::makeFlacStream(musicStream, true);
#endif
}
}
+
+ if (!audioStream)
+ delete musicStream;
}
}
}