From 0a1f5dbd4ca2592badfcc775926ac3708eb17413 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 11 Oct 2015 16:19:53 -0400 Subject: [PATCH] SHERLOCK: Fix memory leak playing music --- engines/sherlock/music.cpp | 5 ++++- engines/sherlock/music.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/engines/sherlock/music.cpp b/engines/sherlock/music.cpp index 7ab5cd4b4f1b..8b8f359de379 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 72a5f488336d..186e2aa2dc1f 100644 --- a/engines/sherlock/music.h +++ b/engines/sherlock/music.h @@ -68,6 +68,7 @@ class Music { MidiDriver *_midiDriver; Audio::SoundHandle _digitalMusicHandle; MusicType _musicType; + byte *_midiMusicData; /** * Play the specified music resource