aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2015-10-11 16:19:53 -0400
committerPaul Gilbert2015-10-11 16:19:53 -0400
commit0a1f5dbd4ca2592badfcc775926ac3708eb17413 (patch)
treedd61e69c7fe560f0ad7b81ff443aa5ef75df9b21 /engines
parentac24e8799f72a7c1e8494c7a97a0ab9faa5d01fd (diff)
downloadscummvm-rg350-0a1f5dbd4ca2592badfcc775926ac3708eb17413.tar.gz
scummvm-rg350-0a1f5dbd4ca2592badfcc775926ac3708eb17413.tar.bz2
scummvm-rg350-0a1f5dbd4ca2592badfcc775926ac3708eb17413.zip
SHERLOCK: Fix memory leak playing music
Diffstat (limited to 'engines')
-rw-r--r--engines/sherlock/music.cpp5
-rw-r--r--engines/sherlock/music.h1
2 files changed, 5 insertions, 1 deletions
diff --git a/engines/sherlock/music.cpp b/engines/sherlock/music.cpp
index 7ab5cd4b4f..8b8f359de3 100644
--- a/engines/sherlock/music.cpp
+++ b/engines/sherlock/music.cpp
@@ -225,6 +225,7 @@ Music::Music(SherlockEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) {
_musicOn = false;
_midiOption = false;
_musicVolume = 0;
+ _midiMusicData = nullptr;
if (IS_3DO) {
// 3DO - uses digital samples for music
@@ -470,8 +471,8 @@ bool Music::playMusic(const Common::String &name) {
}
}
+ _midiMusicData = midiMusicData;
_midiParser->loadMusic(midiMusicData, midiMusicDataSize);
-
} else {
// 3DO: sample based
Audio::AudioStream *musicStream;
@@ -517,6 +518,8 @@ void Music::freeSong() {
_midiParser->unloadMusic();
}
+ delete[] _midiMusicData;
+ _midiMusicData = nullptr;
_musicPlaying = false;
}
diff --git a/engines/sherlock/music.h b/engines/sherlock/music.h
index 72a5f48833..186e2aa2dc 100644
--- a/engines/sherlock/music.h
+++ b/engines/sherlock/music.h
@@ -68,6 +68,7 @@ private:
MidiDriver *_midiDriver;
Audio::SoundHandle _digitalMusicHandle;
MusicType _musicType;
+ byte *_midiMusicData;
/**
* Play the specified music resource