diff --git a/src/xspice/icm/analog/oneshot/cfunc.mod b/src/xspice/icm/analog/oneshot/cfunc.mod index a3e67252a..3166ad0bc 100644 --- a/src/xspice/icm/analog/oneshot/cfunc.mod +++ b/src/xspice/icm/analog/oneshot/cfunc.mod @@ -92,10 +92,12 @@ oneshot_callback(ARGS, Mif_Callback_Reason_t reason) switch (reason) { case MIF_CB_DESTROY: { Local_Data_t *loc = STATIC_VAR (locdata); - if (loc) { + if (loc) { + if (loc->control) free(loc->control); + if (loc->pw) free(loc->pw); free(loc); - STATIC_VAR (locdata) = NULL; - } + STATIC_VAR (locdata) = loc = NULL; + } break; } } @@ -268,7 +270,7 @@ void cm_oneshot(ARGS) /* structure holding parms, /*** allocate static storage for *loc ***/ STATIC_VAR (locdata) = calloc (1 , sizeof ( Local_Data_t )); loc = STATIC_VAR (locdata); - CALLBACK = oneshot_callback; + CALLBACK = oneshot_callback; /* Allocate storage for breakpoint domain & pulse width values */ x = loc->control = (double *) calloc((size_t) cntl_size, sizeof(double));