aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/midi
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/midi')
-rw-r--r--Alc/midi/sf2load.c32
1 files changed, 11 insertions, 21 deletions
diff --git a/Alc/midi/sf2load.c b/Alc/midi/sf2load.c
index 1733bab2..43f960c6 100644
--- a/Alc/midi/sf2load.c
+++ b/Alc/midi/sf2load.c
@@ -1322,35 +1322,25 @@ ALboolean loadSf2(Reader *stream, ALsoundfont *soundfont, ALCcontext *context)
GenModList_Destruct(&gzone);
IDList_Destruct(&fsids);
}
+ if(pids.ids_size > 0)
{
- ALsizei count = pids.ids_size;
- ALsfpreset **presets;
+ ALsfpreset **presets = NULL;
+ ALCdevice *device = context->Device;
- if(count == 0)
- presets = NULL;
- else
- {
- ALCdevice *device = context->Device;
-
- presets = calloc(count, sizeof(presets[0]));
- if(!presets)
- SET_ERROR_AND_GOTO(context, AL_OUT_OF_MEMORY, error);
+ presets = calloc(pids.ids_size, sizeof(presets[0]));
+ if(!presets)
+ SET_ERROR_AND_GOTO(context, AL_OUT_OF_MEMORY, error);
- for(i = 0;i < count;i++)
- {
- if(!(presets[i]=LookupPreset(device, pids.ids[i])))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, error);
- }
+ for(i = 0;i < pids.ids_size;i++)
+ {
+ if(!(presets[i]=LookupPreset(device, pids.ids[i])))
+ SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, error);
}
- for(i = 0;i < count;i++)
+ for(i = 0;i < pids.ids_size;i++)
IncrementRef(&presets[i]->ref);
-
presets = ExchangePtr((XchgPtr*)&soundfont->Presets, presets);
- count = ExchangeInt(&soundfont->NumPresets, count);
- for(i = 0;i < count;i++)
- DecrementRef(&presets[i]->ref);
free(presets);
}