Fix a memory leak.

svn-id: r47227
This commit is contained in:
Johannes Schickel 2010-01-10 15:23:35 +00:00
parent 6ca0570fe3
commit 0447a7f9f8

View File

@ -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;
}
}
}