diff --git a/src/spicelib/devices/adms/admst/ngspiceMODULEdest.c.xml b/src/spicelib/devices/adms/admst/ngspiceMODULEdest.c.xml index 341560499..e15c38ddc 100644 --- a/src/spicelib/devices/adms/admst/ngspiceMODULEdest.c.xml +++ b/src/spicelib/devices/adms/admst/ngspiceMODULEdest.c.xml @@ -40,35 +40,29 @@ - #include "ngspice/ngspice.h" #include "$(module)defs.h" #include "ngspice/suffix.h" -void $(module)destroy(GENmodel **inModel) - +void +$(module)destroy(GENmodel **inModel) { - register $(module)model **model = ($(module)model**)inModel; - register $(module)instance *here; - $(module)instance *prev = NULL; - $(module)model *mod = *model; - $(module)model *oldmod = NULL; - - for ( ; mod ; mod = mod->$(module)nextModel ) { - if (oldmod) FREE(oldmod); - oldmod = mod; - prev = ($(module)instance *)NULL; - for (here = mod->$(module)instances; here ; here = here->$(module)nextInstance) { - if(prev) FREE(prev); - prev = here; - } - if(prev) FREE(prev); - } - if(oldmod) FREE(oldmod); - *model = NULL; - return; -} + $(module)model *mod = *($(module)model**) inModel; + while (mod) { + $(module)model *next_mod = mod->$(module)nextModel; + $(module)instance *inst = mod->$(module)instances; + while (inst) { + $(module)instance *next_inst = inst->$(module)nextInstance; + FREE(inst); + inst = next_inst; + } + FREE(mod); + mod = next_mod; + } + + *inModel = NULL; +}