Fix memory leak in xspice oneshot.

This commit is contained in:
Brian Taylor 2025-05-18 14:01:47 -07:00 committed by Holger Vogt
parent c9bd5bebbf
commit 4cf4b70c67
1 changed files with 6 additions and 4 deletions

View File

@ -92,10 +92,12 @@ oneshot_callback(ARGS, Mif_Callback_Reason_t reason)
switch (reason) { switch (reason) {
case MIF_CB_DESTROY: { case MIF_CB_DESTROY: {
Local_Data_t *loc = STATIC_VAR (locdata); 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); free(loc);
STATIC_VAR (locdata) = NULL; STATIC_VAR (locdata) = loc = NULL;
} }
break; break;
} }
} }
@ -268,7 +270,7 @@ void cm_oneshot(ARGS) /* structure holding parms,
/*** allocate static storage for *loc ***/ /*** allocate static storage for *loc ***/
STATIC_VAR (locdata) = calloc (1 , sizeof ( Local_Data_t )); STATIC_VAR (locdata) = calloc (1 , sizeof ( Local_Data_t ));
loc = STATIC_VAR (locdata); loc = STATIC_VAR (locdata);
CALLBACK = oneshot_callback; CALLBACK = oneshot_callback;
/* Allocate storage for breakpoint domain & pulse width values */ /* Allocate storage for breakpoint domain & pulse width values */
x = loc->control = (double *) calloc((size_t) cntl_size, sizeof(double)); x = loc->control = (double *) calloc((size_t) cntl_size, sizeof(double));