From c4f8a02eb0d7d2770274c5e3a03c0d8def2a7f4c Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Mon, 27 Aug 2018 17:00:10 +0200 Subject: [PATCH] add a callback to de-allocate the static variable p->element --- .../icm/spice2poly/icm_spice2poly/cfunc.mod | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/xspice/icm/spice2poly/icm_spice2poly/cfunc.mod b/src/xspice/icm/spice2poly/icm_spice2poly/cfunc.mod index 5e1ea2eba..4e4687337 100644 --- a/src/xspice/icm/spice2poly/icm_spice2poly/cfunc.mod +++ b/src/xspice/icm/spice2poly/icm_spice2poly/cfunc.mod @@ -68,6 +68,20 @@ and function nxtpwr() performs the function of subroutine NXTPWR. static double evterm(double x, int n); static void nxtpwr(int *pwrseq, int pdim); +static void +cm_spice2poly_callback(ARGS, Mif_Callback_Reason_t reason) +{ + switch (reason) { + case MIF_CB_DESTROY: { + Mif_Inst_Var_Data_t *p = STATIC_VAR_INST(acgains); + if(p->element) { + free(p->element); + p->element = NULL; + } + break; + } + } +} @@ -98,6 +112,7 @@ void spice2poly (ARGS) /* array */ if(INIT) { + CALLBACK = cm_spice2poly_callback; Mif_Inst_Var_Data_t *p = STATIC_VAR_INST(acgains); p -> size = num_inputs; p -> element = (Mif_Value_t *) malloc((size_t) num_inputs * sizeof(Mif_Value_t));