From 95a7b8c29b48b44b3ec1b8ad0cfc566dcd3c5929 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Fri, 18 Jan 2019 20:02:24 -0500 Subject: [PATCH] fix system menu sound memory leaks in ogg mixing --- libretro-common/audio/audio_mixer.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libretro-common/audio/audio_mixer.c b/libretro-common/audio/audio_mixer.c index 21a0089c46..9d419aea19 100644 --- a/libretro-common/audio/audio_mixer.c +++ b/libretro-common/audio/audio_mixer.c @@ -554,6 +554,14 @@ static bool audio_mixer_play_ogg( goto error; } + /* "system" menu sounds may reuse the same voice without freeing anything first, so do that here if needed */ + if (voice->types.ogg.buffer) + memalign_free(voice->types.ogg.buffer); + if (voice->types.ogg.stream) + stb_vorbis_close(voice->types.ogg.stream); + if (voice->types.ogg.resampler && voice->types.ogg.resampler_data) + voice->types.ogg.resampler->free(voice->types.ogg.resampler_data); + voice->types.ogg.resampler = resamp; voice->types.ogg.resampler_data = resampler_data; voice->types.ogg.buffer = (float*)ogg_buffer;