From 7baf22c0e31db686ad9fa44aecf6f13d1f282bfc Mon Sep 17 00:00:00 2001 From: rude Date: Tue, 21 Aug 2012 16:14:38 +0200 Subject: [PATCH] Apply Boolsheet's GME leak patch. --- src/modules/sound/lullaby/GmeDecoder.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/modules/sound/lullaby/GmeDecoder.cpp b/src/modules/sound/lullaby/GmeDecoder.cpp index 2280dd2be..c16323dc4 100644 --- a/src/modules/sound/lullaby/GmeDecoder.cpp +++ b/src/modules/sound/lullaby/GmeDecoder.cpp @@ -46,11 +46,19 @@ GmeDecoder::GmeDecoder(Data *data, const std::string &ext, int bufferSize) num_tracks = gme_track_count(emu); - if (num_tracks <= 0) - throw love::Exception("Game music file has no tracks"); + try + { + if (num_tracks <= 0) + throw love::Exception("Game music file has no tracks"); - if (gme_start_track(emu, cur_track) != 0) - throw love::Exception("Could not start game music playback"); + if (gme_start_track(emu, cur_track) != 0) + throw love::Exception("Could not start game music playback"); + } + catch (love::Exception &) + { + gme_delete(emu); + throw; + } } GmeDecoder::~GmeDecoder()