aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2006-04-18 23:08:41 +0000
committerTravis Howell2006-04-18 23:08:41 +0000
commitec7e734adb2133a653f500636b101fc09ab6e4ae (patch)
tree0b61d9c5947521ce1287367bddc78293143ee49f
parent58af73b344928cf817613c7d51e0769b064d48ae (diff)
downloadscummvm-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.cpp13
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) {