diff options
author | Travis Howell | 2006-04-18 23:08:41 +0000 |
---|---|---|
committer | Travis Howell | 2006-04-18 23:08:41 +0000 |
commit | ec7e734adb2133a653f500636b101fc09ab6e4ae (patch) | |
tree | 0b61d9c5947521ce1287367bddc78293143ee49f | |
parent | 58af73b344928cf817613c7d51e0769b064d48ae (diff) | |
download | scummvm-rg350-ec7e734adb2133a653f500636b101fc09ab6e4ae.tar.gz scummvm-rg350-ec7e734adb2133a653f500636b101fc09ab6e4ae.tar.bz2 scummvm-rg350-ec7e734adb2133a653f500636b101fc09ab6e4ae.zip |
Fix sound memory leak in FF
svn-id: r22016
-rw-r--r-- | engines/simon/sound.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/engines/simon/sound.cpp b/engines/simon/sound.cpp index b65e1b9c80..27aa57cfa2 100644 --- a/engines/simon/sound.cpp +++ b/engines/simon/sound.cpp @@ -136,11 +136,11 @@ void WavSound::playSound(uint sound, Audio::SoundHandle *handle, byte flags) { error("playSound: Not a valid WAV file"); } - flags |= Audio::Mixer::FLAG_AUTOFREE | wavFlags; + flags |= wavFlags; byte *buffer = (byte *)malloc(size); _file->read(buffer, size); - _mixer->playRaw(handle, buffer, size, rate, flags); + _mixer->playRaw(handle, buffer, size, rate, flags | Audio::Mixer::FLAG_AUTOFREE); } void VocSound::playSound(uint sound, Audio::SoundHandle *handle, byte flags) { @@ -151,7 +151,6 @@ void VocSound::playSound(uint sound, Audio::SoundHandle *handle, byte flags) { int size, rate; byte *buffer = loadVOCFromStream(*_file, size, rate); - _mixer->playRaw(handle, buffer, size, rate, flags | Audio::Mixer::FLAG_AUTOFREE); } @@ -164,7 +163,6 @@ void RawSound::playSound(uint sound, Audio::SoundHandle *handle, byte flags) { uint size = _file->readUint32BE(); byte *buffer = (byte *)malloc(size); _file->read(buffer, size); - _mixer->playRaw(handle, buffer, size, 22050, flags | Audio::Mixer::FLAG_AUTOFREE); } @@ -563,13 +561,12 @@ void Sound::playSoundData(Audio::SoundHandle *handle, byte *soundData, uint soun error("playSoundData: Not a valid WAV data"); } - byte *buffer = (byte *)malloc(size); - memcpy(buffer, soundData + stream.pos(), size); - if (loop == true) flags |= Audio::Mixer::FLAG_LOOP; - _mixer->playRaw(handle, buffer, size, rate, flags, sound); + byte *buffer = (byte *)malloc(size); + memcpy(buffer, soundData + stream.pos(), size); + _mixer->playRaw(handle, buffer, size, rate, flags | Audio::Mixer::FLAG_AUTOFREE); } void Sound::playVoiceData(byte *soundData, uint sound) { |