aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2014-01-04 03:20:17 -0800
committerChris Robinson <[email protected]>2014-01-04 03:20:17 -0800
commit4834f56779261a7fd7761544f79c90df0d06fc39 (patch)
tree385f44e6e1cb04577345517b799d9a23c704f899
parent2dd87946fd261d3960deac74420dc1860e19ae8e (diff)
Don't create presets that don't have any usable sounds
-rw-r--r--Alc/midi/sf2load.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/Alc/midi/sf2load.c b/Alc/midi/sf2load.c
index a27bf624..c960566b 100644
--- a/Alc/midi/sf2load.c
+++ b/Alc/midi/sf2load.c
@@ -1185,10 +1185,6 @@ ALboolean loadSf2(Reader *stream, ALsoundfont *soundfont, ALCcontext *context)
if(sfont.phdr[i+1].mZoneIdx == sfont.phdr[i].mZoneIdx)
continue;
- presets[presets_size] = NewPreset(context);
- presets[presets_size]->Preset = sfont.phdr[i].mPreset;
- presets[presets_size]->Bank = sfont.phdr[i].mBank;
-
GenModList_Construct(&gzone);
zone = sfont.pbag + sfont.phdr[i].mZoneIdx;
zone_end = sfont.pbag + sfont.phdr[i+1].mZoneIdx;
@@ -1252,13 +1248,16 @@ ALboolean loadSf2(Reader *stream, ALsoundfont *soundfont, ALCcontext *context)
{
ALsizei j;
+ presets[presets_size] = NewPreset(context);
+ presets[presets_size]->Preset = sfont.phdr[i].mPreset;
+ presets[presets_size]->Bank = sfont.phdr[i].mBank;
+
for(j = 0;j < sounds_size;j++)
IncrementRef(&sounds[j]->ref);
sounds = ExchangePtr((XchgPtr*)&presets[presets_size]->Sounds, sounds);
ExchangeInt(&presets[presets_size]->NumSounds, sounds_size);
+ presets_size++;
}
- presets_size++;
-
free(sounds);
GenModList_Destruct(&gzone);