From 9d7175259ed000fb5adefe7e57635960627b0c0a Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Mon, 8 Jun 2020 14:55:15 +0300 Subject: [PATCH] - timidity++: better handling of soundfont terminal preset record --- thirdparty/timidityplus/sndfont.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/thirdparty/timidityplus/sndfont.cpp b/thirdparty/timidityplus/sndfont.cpp index 854529c..2337f17 100644 --- a/thirdparty/timidityplus/sndfont.cpp +++ b/thirdparty/timidityplus/sndfont.cpp @@ -267,7 +267,8 @@ void Instruments::init_sf(SFInsts *rec) return; } - if(load_soundfont(&sfinfo, rec->tf)) + // SoundFont spec, 7.2: ... contains a minimum of two records, one record for each preset and one for a terminal record + if(load_soundfont(&sfinfo, rec->tf) || sfinfo.npresets < 2) { end_soundfont(rec); return; @@ -275,7 +276,7 @@ void Instruments::init_sf(SFInsts *rec) correct_samples(&sfinfo); current_sfrec = rec; - for (i = 0; i < sfinfo.npresets; i++) { + for (i = 0; i < sfinfo.npresets - 1; i++) { int bank = sfinfo.preset[i].bank; int preset = sfinfo.preset[i].preset;