SDL_mixer: sndfont.c: further fixes / tidy-up in init_soundfont().

From a8fe2fdbe5861fd8ad041f552226b0c87abefba5 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Sat, 15 Aug 2026 08:40:50 +0300
Subject: [PATCH] sndfont.c: further fixes / tidy-up in init_soundfont().

TODO: move load_sbk() stuff from midi song load to mid_init() time.
---
 src/timidity/sndfont.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/timidity/sndfont.c b/src/timidity/sndfont.c
index c9f00bd4..e0f1ccf0 100644
--- a/src/timidity/sndfont.c
+++ b/src/timidity/sndfont.c
@@ -139,19 +139,17 @@ int init_soundfont(MidiSong *song, const char *fname, int order)
 
 	SNDDBG(("init soundfonts `%s'\n", fname));
 
+	SDL_memset(&sfinfo, 0, sizeof(sfinfo));
+
 	if ((sfrec.io = timi_openfile(fname)) == NULL) {
 		SNDDBG(("can't open soundfont file %s\n", fname));
 		return -1;
 	}
 	sfrec.fname = SDL_strdup(fname);
+	if (!sfrec.fname) goto nomem;
 	if (load_sbk(sfrec.io, &sfinfo) < 0) {
 		SNDDBG(("%s: bad soundfont file\n", fname));
-		SDL_CloseIO(sfrec.io);
-		sfrec.io = NULL;
-		SDL_free(sfrec.fname);
-		sfrec.fname = NULL;
-		free_sbk(&sfinfo);
-		return -1;
+		goto fail;
 	}
 
 	for (i = 0; i < sfinfo.nrpresets - 1; i++) {
@@ -162,16 +160,16 @@ int init_soundfont(MidiSong *song, const char *fname, int order)
 		if (bank == 128) {
 			if (!song->drumset[preset]) {
 				song->drumset[preset] = (ToneBank*)SDL_calloc(1, sizeof(ToneBank));
-				if (!song->drumset[preset]) goto fail;
+				if (!song->drumset[preset]) goto nomem;
 				song->drumset[preset]->tone = (ToneBankElement *) SDL_calloc(128, sizeof(ToneBankElement));
-				if (!song->drumset[preset]->tone) goto fail;
+				if (!song->drumset[preset]->tone) goto nomem;
 			}
 		} else {
 			if (!song->tonebank[bank]) {
 				song->tonebank[bank] = (ToneBank*)SDL_calloc(1, sizeof(ToneBank));
-				if (!song->tonebank[bank]) goto fail;
+				if (!song->tonebank[bank]) goto nomem;
 				song->tonebank[bank]->tone = (ToneBankElement *) SDL_calloc(128, sizeof(ToneBankElement));
-				if (!song->tonebank[bank]->tone) goto fail;
+				if (!song->tonebank[bank]->tone) goto nomem;
 			}
 		}
 		parse_preset(song, &sfrec, &sfinfo, i, order);
@@ -190,10 +188,14 @@ int init_soundfont(MidiSong *song, const char *fname, int order)
 	sfrec.io = NULL;
 #endif
 	return 0;
-fail:
+nomem:
 	song->oom = 1;
+fail:	SDL_CloseIO(sfrec.io);
+	sfrec.io = NULL;
+	SDL_free(sfrec.fname);
+	sfrec.fname = NULL;
+	free_sbk(&sfinfo);
 	return -1;
-
 }