From 981c1c771944744251795e20e86f16902c2be3bf Mon Sep 17 00:00:00 2001 From: ds-sloth <72112344+ds-sloth@users.noreply.github.com> Date: Sun, 26 Jan 2025 17:38:16 -0500 Subject: [PATCH] music_pxtone.cpp: fix RWops leak --- src/codecs/music_pxtone.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/codecs/music_pxtone.cpp b/src/codecs/music_pxtone.cpp index 7606cfb..55fa53b 100644 --- a/src/codecs/music_pxtone.cpp +++ b/src/codecs/music_pxtone.cpp @@ -47,10 +47,6 @@ static void PXTONE_SetDefault(PXTONE_Setup *setup) /* This file supports PXTONE music streams */ typedef struct { - SDL_RWops *src; - Sint64 src_start; - int freesrc; - int volume; int volume_real; double tempo; @@ -251,7 +247,6 @@ static void *PXTONE_NewRWex(struct SDL_RWops *src, int freesrc, const char *args } /* Attempt to load metadata */ - music->freesrc = freesrc; name = music->pxtn->text->get_name_buf(&name_len); if (name) { @@ -267,6 +262,11 @@ static void *PXTONE_NewRWex(struct SDL_RWops *src, int freesrc, const char *args SDL_free(temp_string); } + /* release RWops now, since it's already fully loaded to pxtn */ + if (freesrc) { + SDL_RWclose(src); + } + return music; } @@ -298,9 +298,6 @@ static void PXTONE_Delete(void *context) SDL_free(music->buffer); } - if (music->src && music->freesrc) { - SDL_RWclose(music->src); - } SDL_free(music); } }