Merge pull request #815 from FluidSynth/fluid-sffile-variable-renaming

Rename variables in fluid_sffile.c for easier readability
This commit is contained in:
Tom M 2021-03-16 08:47:28 +01:00 committed by GitHub
commit ea5ebe4813
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1146,7 +1146,8 @@ static int load_phdr(SFData *sf, unsigned int size)
/* preset bag loader */ /* preset bag loader */
static int load_pbag(SFData *sf, int size) static int load_pbag(SFData *sf, int size)
{ {
fluid_list_t *p, *p2; fluid_list_t *preset_list;
fluid_list_t *zone_list;
SFZone *z, *pz = NULL; SFZone *z, *pz = NULL;
unsigned short genndx, modndx; unsigned short genndx, modndx;
unsigned short pgenndx = 0, pmodndx = 0; unsigned short pgenndx = 0, pmodndx = 0;
@ -1158,14 +1159,14 @@ static int load_pbag(SFData *sf, int size)
return FALSE; return FALSE;
} }
p = sf->preset; preset_list = sf->preset;
while(p) while(preset_list)
{ {
/* traverse through presets */ /* traverse through presets */
p2 = ((SFPreset *)(p->data))->zone; zone_list = ((SFPreset *)(preset_list->data))->zone;
while(p2) while(zone_list)
{ {
/* traverse preset's zones */ /* traverse preset's zones */
if((size -= SF_BAG_SIZE) < 0) if((size -= SF_BAG_SIZE) < 0)
@ -1180,7 +1181,7 @@ static int load_pbag(SFData *sf, int size)
return FALSE; return FALSE;
} }
p2->data = z; zone_list->data = z;
z->gen = NULL; /* Init gen and mod before possible failure, */ z->gen = NULL; /* Init gen and mod before possible failure, */
z->mod = NULL; /* to ensure proper cleanup (fluid_sffile_close) */ z->mod = NULL; /* to ensure proper cleanup (fluid_sffile_close) */
READW(sf, genndx); /* possible read failure ^ */ READW(sf, genndx); /* possible read failure ^ */
@ -1220,10 +1221,10 @@ static int load_pbag(SFData *sf, int size)
pz = z; /* update previous zone ptr */ pz = z; /* update previous zone ptr */
pgenndx = genndx; /* update previous zone gen index */ pgenndx = genndx; /* update previous zone gen index */
pmodndx = modndx; /* update previous zone mod index */ pmodndx = modndx; /* update previous zone mod index */
p2 = fluid_list_next(p2); zone_list = fluid_list_next(zone_list);
} }
p = fluid_list_next(p); preset_list = fluid_list_next(preset_list);
} }
size -= SF_BAG_SIZE; size -= SF_BAG_SIZE;
@ -1284,22 +1285,24 @@ static int load_pbag(SFData *sf, int size)
/* preset modulator loader */ /* preset modulator loader */
static int load_pmod(SFData *sf, int size) static int load_pmod(SFData *sf, int size)
{ {
fluid_list_t *p, *p2, *p3; fluid_list_t *preset_list;
fluid_list_t *zone_list;
fluid_list_t *mod_list;
SFMod *m; SFMod *m;
p = sf->preset; preset_list = sf->preset;
while(p) while(preset_list)
{ {
/* traverse through all presets */ /* traverse through all presets */
p2 = ((SFPreset *)(p->data))->zone; zone_list = ((SFPreset *)(preset_list->data))->zone;
while(p2) while(zone_list)
{ {
/* traverse this preset's zones */ /* traverse this preset's zones */
p3 = ((SFZone *)(p2->data))->mod; mod_list = ((SFZone *)(zone_list->data))->mod;
while(p3) while(mod_list)
{ {
/* load zone's modulators */ /* load zone's modulators */
if((size -= SF_MOD_SIZE) < 0) if((size -= SF_MOD_SIZE) < 0)
@ -1314,19 +1317,19 @@ static int load_pmod(SFData *sf, int size)
return FALSE; return FALSE;
} }
p3->data = m; mod_list->data = m;
READW(sf, m->src); READW(sf, m->src);
READW(sf, m->dest); READW(sf, m->dest);
READW(sf, m->amount); READW(sf, m->amount);
READW(sf, m->amtsrc); READW(sf, m->amtsrc);
READW(sf, m->trans); READW(sf, m->trans);
p3 = fluid_list_next(p3); mod_list = fluid_list_next(mod_list);
} }
p2 = fluid_list_next(p2); zone_list = fluid_list_next(zone_list);
} }
p = fluid_list_next(p); preset_list = fluid_list_next(preset_list);
} }
/* /*
@ -1365,35 +1368,39 @@ static int load_pmod(SFData *sf, int size)
* ------------------------------------------------------------------- */ * ------------------------------------------------------------------- */
static int load_pgen(SFData *sf, int size) static int load_pgen(SFData *sf, int size)
{ {
fluid_list_t *p, *p2, *p3, *dup, **hz = NULL, *start_of_zone_list; fluid_list_t *dup, **hz = NULL;
fluid_list_t *preset_list;
fluid_list_t *zone_list;
fluid_list_t *gen_list;
fluid_list_t *start_of_zone_list;
SFZone *z; SFZone *z;
SFGen *g; SFGen *g;
SFGenAmount genval; SFGenAmount genval;
unsigned short genid; unsigned short genid;
int level, skip, drop, gzone, discarded; int level, skip, drop, gzone, discarded;
p = sf->preset; preset_list = sf->preset;
while(p) while(preset_list)
{ {
/* traverse through all presets */ /* traverse through all presets */
gzone = FALSE; gzone = FALSE;
discarded = FALSE; discarded = FALSE;
start_of_zone_list = p2 = ((SFPreset *)(p->data))->zone; start_of_zone_list = zone_list = ((SFPreset *)(preset_list->data))->zone;
if(p2) if(zone_list)
{ {
hz = &p2; hz = &zone_list;
} }
while(p2) while(zone_list)
{ {
/* traverse preset's zones */ /* traverse preset's zones */
level = 0; level = 0;
z = (SFZone *)(p2->data); z = (SFZone *)(zone_list->data);
p3 = z->gen; gen_list = z->gen;
while(p3) while(gen_list)
{ {
/* load zone's generators */ /* load zone's generators */
dup = NULL; dup = NULL;
@ -1441,7 +1448,7 @@ static int load_pgen(SFData *sf, int size)
/* inst is last gen */ /* inst is last gen */
level = 3; level = 3;
READW(sf, genval.uword); READW(sf, genval.uword);
((SFZone *)(p2->data))->instsamp = FLUID_INT_TO_POINTER(genval.uword + 1); ((SFZone *)(zone_list->data))->instsamp = FLUID_INT_TO_POINTER(genval.uword + 1);
break; /* break out of generator loop */ break; /* break out of generator loop */
} }
else else
@ -1471,7 +1478,7 @@ static int load_pgen(SFData *sf, int size)
return FALSE; return FALSE;
} }
p3->data = g; gen_list->data = g;
g->id = genid; g->id = genid;
} }
else else
@ -1492,18 +1499,18 @@ static int load_pgen(SFData *sf, int size)
if(!drop) if(!drop)
{ {
p3 = fluid_list_next(p3); /* next gen */ gen_list = fluid_list_next(gen_list); /* next gen */
} }
else else
{ {
SLADVREM(z->gen, p3); /* drop place holder */ SLADVREM(z->gen, gen_list); /* drop place holder */
} }
} /* generator loop */ } /* generator loop */
if(level == 3) if(level == 3)
{ {
SLADVREM(z->gen, p3); /* zone has inst? */ SLADVREM(z->gen, gen_list); /* zone has inst? */
} }
else else
{ {
@ -1514,29 +1521,29 @@ static int load_pgen(SFData *sf, int size)
gzone = TRUE; gzone = TRUE;
/* if global zone is not 1st zone, relocate */ /* if global zone is not 1st zone, relocate */
if(*hz != p2) if(*hz != zone_list)
{ {
void *save = p2->data; void *save = zone_list->data;
FLUID_LOG(FLUID_WARN, "Preset '%s': Global zone is not first zone", FLUID_LOG(FLUID_WARN, "Preset '%s': Global zone is not first zone",
((SFPreset *)(p->data))->name); ((SFPreset *)(preset_list->data))->name);
SLADVREM(*hz, p2); SLADVREM(*hz, zone_list);
*hz = fluid_list_prepend(*hz, save); *hz = fluid_list_prepend(*hz, save);
continue; continue;
} }
} }
else else
{ {
p2 = fluid_list_next(p2); /* advance to next zone before deleting the current list element */ zone_list = fluid_list_next(zone_list); /* advance to next zone before deleting the current list element */
/* previous global zone exists, discard */ /* previous global zone exists, discard */
FLUID_LOG(FLUID_WARN, "Preset '%s': Discarding invalid global zone", FLUID_LOG(FLUID_WARN, "Preset '%s': Discarding invalid global zone",
((SFPreset *)(p->data))->name); ((SFPreset *)(preset_list->data))->name);
fluid_list_remove(start_of_zone_list, z); fluid_list_remove(start_of_zone_list, z);
delete_zone(z); delete_zone(z);
continue; continue;
} }
} }
while(p3) while(gen_list)
{ {
/* Kill any zones following an instrument */ /* Kill any zones following an instrument */
discarded = TRUE; discarded = TRUE;
@ -1548,20 +1555,20 @@ static int load_pgen(SFData *sf, int size)
} }
FSKIP(sf, SF_GEN_SIZE); FSKIP(sf, SF_GEN_SIZE);
SLADVREM(z->gen, p3); SLADVREM(z->gen, gen_list);
} }
p2 = fluid_list_next(p2); /* next zone */ zone_list = fluid_list_next(zone_list); /* next zone */
} }
if(discarded) if(discarded)
{ {
FLUID_LOG(FLUID_WARN, FLUID_LOG(FLUID_WARN,
"Preset '%s': Some invalid generators were discarded", "Preset '%s': Some invalid generators were discarded",
((SFPreset *)(p->data))->name); ((SFPreset *)(preset_list->data))->name);
} }
p = fluid_list_next(p); preset_list = fluid_list_next(preset_list);
} }
/* in case there isn't a terminal record */ /* in case there isn't a terminal record */
@ -1588,7 +1595,7 @@ static int load_ihdr(SFData *sf, unsigned int size)
{ {
unsigned int i; unsigned int i;
int i2; int i2;
SFInst *p, *pr = NULL; /* ptr to current & previous instrument */ SFInst *inst, *prev_inst = NULL; /* ptr to current & previous instrument */
unsigned short zndx, pzndx = 0; unsigned short zndx, pzndx = 0;
if(size % SF_IHDR_SIZE || size == 0) /* chunk size is valid? */ if(size % SF_IHDR_SIZE || size == 0) /* chunk size is valid? */
@ -1610,19 +1617,19 @@ static int load_ihdr(SFData *sf, unsigned int size)
for(i = 0; i < size; i++) for(i = 0; i < size; i++)
{ {
/* load all instrument headers */ /* load all instrument headers */
if((p = FLUID_NEW(SFInst)) == NULL) if((inst = FLUID_NEW(SFInst)) == NULL)
{ {
FLUID_LOG(FLUID_ERR, "Out of memory"); FLUID_LOG(FLUID_ERR, "Out of memory");
return FALSE; return FALSE;
} }
sf->inst = fluid_list_append(sf->inst, p); sf->inst = fluid_list_append(sf->inst, inst);
p->zone = NULL; /* For proper cleanup if fail (fluid_sffile_close) */ inst->zone = NULL; /* For proper cleanup if fail (fluid_sffile_close) */
p->idx = i; inst->idx = i;
READSTR(sf, &p->name); /* Possible read failure ^ */ READSTR(sf, &inst->name); /* Possible read failure ^ */
READW(sf, zndx); READW(sf, zndx);
if(pr) if(prev_inst)
{ {
/* not first instrument? */ /* not first instrument? */
if(zndx < pzndx) if(zndx < pzndx)
@ -1635,7 +1642,7 @@ static int load_ihdr(SFData *sf, unsigned int size)
while(i2--) while(i2--)
{ {
pr->zone = fluid_list_prepend(pr->zone, NULL); prev_inst->zone = fluid_list_prepend(prev_inst->zone, NULL);
} }
} }
else if(zndx > 0) /* 1st inst, warn if ofs >0 */ else if(zndx > 0) /* 1st inst, warn if ofs >0 */
@ -1644,7 +1651,7 @@ static int load_ihdr(SFData *sf, unsigned int size)
} }
pzndx = zndx; pzndx = zndx;
pr = p; /* update instrument ptr */ prev_inst = inst; /* update instrument ptr */
} }
FSKIP(sf, 20); FSKIP(sf, 20);
@ -1660,7 +1667,7 @@ static int load_ihdr(SFData *sf, unsigned int size)
while(i2--) while(i2--)
{ {
pr->zone = fluid_list_prepend(pr->zone, NULL); prev_inst->zone = fluid_list_prepend(prev_inst->zone, NULL);
} }
return TRUE; return TRUE;
@ -1669,7 +1676,8 @@ static int load_ihdr(SFData *sf, unsigned int size)
/* instrument bag loader */ /* instrument bag loader */
static int load_ibag(SFData *sf, int size) static int load_ibag(SFData *sf, int size)
{ {
fluid_list_t *p, *p2; fluid_list_t *inst_list;
fluid_list_t *zone_list;
SFZone *z, *pz = NULL; SFZone *z, *pz = NULL;
unsigned short genndx, modndx, pgenndx = 0, pmodndx = 0; unsigned short genndx, modndx, pgenndx = 0, pmodndx = 0;
int i; int i;
@ -1680,14 +1688,14 @@ static int load_ibag(SFData *sf, int size)
return FALSE; return FALSE;
} }
p = sf->inst; inst_list = sf->inst;
while(p) while(inst_list)
{ {
/* traverse through inst */ /* traverse through inst */
p2 = ((SFInst *)(p->data))->zone; zone_list = ((SFInst *)(inst_list->data))->zone;
while(p2) while(zone_list)
{ {
/* load this inst's zones */ /* load this inst's zones */
if((size -= SF_BAG_SIZE) < 0) if((size -= SF_BAG_SIZE) < 0)
@ -1702,7 +1710,7 @@ static int load_ibag(SFData *sf, int size)
return FALSE; return FALSE;
} }
p2->data = z; zone_list->data = z;
z->gen = NULL; /* In case of failure, */ z->gen = NULL; /* In case of failure, */
z->mod = NULL; /* fluid_sffile_close can clean up */ z->mod = NULL; /* fluid_sffile_close can clean up */
READW(sf, genndx); /* READW = possible read failure */ READW(sf, genndx); /* READW = possible read failure */
@ -1742,10 +1750,10 @@ static int load_ibag(SFData *sf, int size)
pz = z; /* update previous zone ptr */ pz = z; /* update previous zone ptr */
pgenndx = genndx; pgenndx = genndx;
pmodndx = modndx; pmodndx = modndx;
p2 = fluid_list_next(p2); zone_list = fluid_list_next(zone_list);
} }
p = fluid_list_next(p); inst_list = fluid_list_next(inst_list);
} }
size -= SF_BAG_SIZE; size -= SF_BAG_SIZE;
@ -1807,22 +1815,24 @@ static int load_ibag(SFData *sf, int size)
/* instrument modulator loader */ /* instrument modulator loader */
static int load_imod(SFData *sf, int size) static int load_imod(SFData *sf, int size)
{ {
fluid_list_t *p, *p2, *p3; fluid_list_t *inst_list;
fluid_list_t *zone_list;
fluid_list_t *mod_list;
SFMod *m; SFMod *m;
p = sf->inst; inst_list = sf->inst;
while(p) while(inst_list)
{ {
/* traverse through all inst */ /* traverse through all inst */
p2 = ((SFInst *)(p->data))->zone; zone_list = ((SFInst *)(inst_list->data))->zone;
while(p2) while(zone_list)
{ {
/* traverse this inst's zones */ /* traverse this inst's zones */
p3 = ((SFZone *)(p2->data))->mod; mod_list = ((SFZone *)(zone_list->data))->mod;
while(p3) while(mod_list)
{ {
/* load zone's modulators */ /* load zone's modulators */
if((size -= SF_MOD_SIZE) < 0) if((size -= SF_MOD_SIZE) < 0)
@ -1837,19 +1847,19 @@ static int load_imod(SFData *sf, int size)
return FALSE; return FALSE;
} }
p3->data = m; mod_list->data = m;
READW(sf, m->src); READW(sf, m->src);
READW(sf, m->dest); READW(sf, m->dest);
READW(sf, m->amount); READW(sf, m->amount);
READW(sf, m->amtsrc); READW(sf, m->amtsrc);
READW(sf, m->trans); READW(sf, m->trans);
p3 = fluid_list_next(p3); mod_list = fluid_list_next(mod_list);
} }
p2 = fluid_list_next(p2); zone_list = fluid_list_next(zone_list);
} }
p = fluid_list_next(p); inst_list = fluid_list_next(inst_list);
} }
/* /*
@ -1877,35 +1887,39 @@ static int load_imod(SFData *sf, int size)
/* load instrument generators (see load_pgen for loading rules) */ /* load instrument generators (see load_pgen for loading rules) */
static int load_igen(SFData *sf, int size) static int load_igen(SFData *sf, int size)
{ {
fluid_list_t *p, *p2, *p3, *dup, **hz = NULL, *start_of_zone_list; fluid_list_t *dup, **hz = NULL;
fluid_list_t *inst_list;
fluid_list_t *zone_list;
fluid_list_t *gen_list;
fluid_list_t *start_of_zone_list;
SFZone *z; SFZone *z;
SFGen *g; SFGen *g;
SFGenAmount genval; SFGenAmount genval;
unsigned short genid; unsigned short genid;
int level, skip, drop, gzone, discarded; int level, skip, drop, gzone, discarded;
p = sf->inst; inst_list = sf->inst;
while(p) while(inst_list)
{ {
/* traverse through all instruments */ /* traverse through all instruments */
gzone = FALSE; gzone = FALSE;
discarded = FALSE; discarded = FALSE;
start_of_zone_list = p2 = ((SFInst *)(p->data))->zone; start_of_zone_list = zone_list = ((SFInst *)(inst_list->data))->zone;
if(p2) if(zone_list)
{ {
hz = &p2; hz = &zone_list;
} }
while(p2) while(zone_list)
{ {
/* traverse this instrument's zones */ /* traverse this instrument's zones */
level = 0; level = 0;
z = (SFZone *)(p2->data); z = (SFZone *)(zone_list->data);
p3 = z->gen; gen_list = z->gen;
while(p3) while(gen_list)
{ {
/* load zone's generators */ /* load zone's generators */
dup = NULL; dup = NULL;
@ -1953,7 +1967,7 @@ static int load_igen(SFData *sf, int size)
/* sample is last gen */ /* sample is last gen */
level = 3; level = 3;
READW(sf, genval.uword); READW(sf, genval.uword);
((SFZone *)(p2->data))->instsamp = FLUID_INT_TO_POINTER(genval.uword + 1); ((SFZone *)(zone_list->data))->instsamp = FLUID_INT_TO_POINTER(genval.uword + 1);
break; /* break out of generator loop */ break; /* break out of generator loop */
} }
else else
@ -1983,7 +1997,7 @@ static int load_igen(SFData *sf, int size)
return FALSE; return FALSE;
} }
p3->data = g; gen_list->data = g;
g->id = genid; g->id = genid;
} }
else else
@ -2004,18 +2018,18 @@ static int load_igen(SFData *sf, int size)
if(!drop) if(!drop)
{ {
p3 = fluid_list_next(p3); /* next gen */ gen_list = fluid_list_next(gen_list); /* next gen */
} }
else else
{ {
SLADVREM(z->gen, p3); SLADVREM(z->gen, gen_list);
} }
} /* generator loop */ } /* generator loop */
if(level == 3) if(level == 3)
{ {
SLADVREM(z->gen, p3); /* zone has sample? */ SLADVREM(z->gen, gen_list); /* zone has sample? */
} }
else else
{ {
@ -2025,29 +2039,29 @@ static int load_igen(SFData *sf, int size)
gzone = TRUE; gzone = TRUE;
/* if global zone is not 1st zone, relocate */ /* if global zone is not 1st zone, relocate */
if(*hz != p2) if(*hz != zone_list)
{ {
void *save = p2->data; void *save = zone_list->data;
FLUID_LOG(FLUID_WARN, "Instrument '%s': Global zone is not first zone", FLUID_LOG(FLUID_WARN, "Instrument '%s': Global zone is not first zone",
((SFPreset *)(p->data))->name); ((SFPreset *)(inst_list->data))->name);
SLADVREM(*hz, p2); SLADVREM(*hz, zone_list);
*hz = fluid_list_prepend(*hz, save); *hz = fluid_list_prepend(*hz, save);
continue; continue;
} }
} }
else else
{ {
p2 = fluid_list_next(p2); /* advance to next zone before deleting the current list element */ zone_list = fluid_list_next(zone_list); /* advance to next zone before deleting the current list element */
/* previous global zone exists, discard */ /* previous global zone exists, discard */
FLUID_LOG(FLUID_WARN, "Instrument '%s': Discarding invalid global zone", FLUID_LOG(FLUID_WARN, "Instrument '%s': Discarding invalid global zone",
((SFInst *)(p->data))->name); ((SFInst *)(inst_list->data))->name);
fluid_list_remove(start_of_zone_list, z); fluid_list_remove(start_of_zone_list, z);
delete_zone(z); delete_zone(z);
continue; continue;
} }
} }
while(p3) while(gen_list)
{ {
/* Kill any zones following a sample */ /* Kill any zones following a sample */
discarded = TRUE; discarded = TRUE;
@ -2059,20 +2073,20 @@ static int load_igen(SFData *sf, int size)
} }
FSKIP(sf, SF_GEN_SIZE); FSKIP(sf, SF_GEN_SIZE);
SLADVREM(z->gen, p3); SLADVREM(z->gen, gen_list);
} }
p2 = fluid_list_next(p2); /* next zone */ zone_list = fluid_list_next(zone_list); /* next zone */
} }
if(discarded) if(discarded)
{ {
FLUID_LOG(FLUID_WARN, FLUID_LOG(FLUID_WARN,
"Instrument '%s': Some invalid generators were discarded", "Instrument '%s': Some invalid generators were discarded",
((SFInst *)(p->data))->name); ((SFInst *)(inst_list->data))->name);
} }
p = fluid_list_next(p); inst_list = fluid_list_next(inst_list);
} }
/* for those non-terminal record cases, grr! */ /* for those non-terminal record cases, grr! */
@ -2146,7 +2160,9 @@ static int load_shdr(SFData *sf, unsigned int size)
/* "fixup" (inst # -> inst ptr) instrument references in preset list */ /* "fixup" (inst # -> inst ptr) instrument references in preset list */
static int fixup_pgen(SFData *sf) static int fixup_pgen(SFData *sf)
{ {
fluid_list_t *p, *p2, *p3; fluid_list_t *p;
fluid_list_t *zone_list;
fluid_list_t *inst_list;
SFZone *z; SFZone *z;
int i; int i;
@ -2154,33 +2170,33 @@ static int fixup_pgen(SFData *sf)
while(p) while(p)
{ {
p2 = ((SFPreset *)(p->data))->zone; zone_list = ((SFPreset *)(p->data))->zone;
while(p2) while(zone_list)
{ {
/* traverse this preset's zones */ /* traverse this preset's zones */
z = (SFZone *)(p2->data); z = (SFZone *)(zone_list->data);
if((i = FLUID_POINTER_TO_INT(z->instsamp))) if((i = FLUID_POINTER_TO_INT(z->instsamp)))
{ {
/* load instrument # */ /* load instrument # */
p3 = fluid_list_nth(sf->inst, i - 1); inst_list = fluid_list_nth(sf->inst, i - 1);
if(!p3) if(!inst_list)
{ {
FLUID_LOG(FLUID_ERR, "Preset %03d %03d: Invalid instrument reference", FLUID_LOG(FLUID_ERR, "Preset %03d %03d: Invalid instrument reference",
((SFPreset *)(p->data))->bank, ((SFPreset *)(p->data))->prenum); ((SFPreset *)(p->data))->bank, ((SFPreset *)(p->data))->prenum);
return FALSE; return FALSE;
} }
z->instsamp = p3; z->instsamp = inst_list;
} }
else else
{ {
z->instsamp = NULL; z->instsamp = NULL;
} }
p2 = fluid_list_next(p2); zone_list = fluid_list_next(zone_list);
} }
p = fluid_list_next(p); p = fluid_list_next(p);
@ -2192,7 +2208,9 @@ static int fixup_pgen(SFData *sf)
/* "fixup" (sample # -> sample ptr) sample references in instrument list */ /* "fixup" (sample # -> sample ptr) sample references in instrument list */
static int fixup_igen(SFData *sf) static int fixup_igen(SFData *sf)
{ {
fluid_list_t *p, *p2, *p3; fluid_list_t *p;
fluid_list_t *zone_list;
fluid_list_t *inst_list;
SFZone *z; SFZone *z;
int i; int i;
@ -2200,29 +2218,29 @@ static int fixup_igen(SFData *sf)
while(p) while(p)
{ {
p2 = ((SFInst *)(p->data))->zone; zone_list = ((SFInst *)(p->data))->zone;
while(p2) while(zone_list)
{ {
/* traverse instrument's zones */ /* traverse instrument's zones */
z = (SFZone *)(p2->data); z = (SFZone *)(zone_list->data);
if((i = FLUID_POINTER_TO_INT(z->instsamp))) if((i = FLUID_POINTER_TO_INT(z->instsamp)))
{ {
/* load sample # */ /* load sample # */
p3 = fluid_list_nth(sf->sample, i - 1); inst_list = fluid_list_nth(sf->sample, i - 1);
if(!p3) if(!inst_list)
{ {
FLUID_LOG(FLUID_ERR, "Instrument '%s': Invalid sample reference", FLUID_LOG(FLUID_ERR, "Instrument '%s': Invalid sample reference",
((SFInst *)(p->data))->name); ((SFInst *)(p->data))->name);
return FALSE; return FALSE;
} }
z->instsamp = p3; z->instsamp = inst_list;
} }
p2 = fluid_list_next(p2); zone_list = fluid_list_next(zone_list);
} }
p = fluid_list_next(p); p = fluid_list_next(p);