diff --git a/src/xspice/icm/digital/d_osc/cfunc.mod b/src/xspice/icm/digital/d_osc/cfunc.mod index a430ab52a..85a526a13 100644 --- a/src/xspice/icm/digital/d_osc/cfunc.mod +++ b/src/xspice/icm/digital/d_osc/cfunc.mod @@ -286,6 +286,7 @@ void cm_d_osc(ARGS) y = (double *) calloc((size_t) freq_size, sizeof(double)); if (!y) { cm_message_send(d_osc_allocation_error); + if(x) free(x); return; } diff --git a/src/xspice/icm/table/table2D/cfunc.mod b/src/xspice/icm/table/table2D/cfunc.mod index 07ee3d8f8..c845523fe 100644 --- a/src/xspice/icm/table/table2D/cfunc.mod +++ b/src/xspice/icm/table/table2D/cfunc.mod @@ -444,6 +444,8 @@ cm_table2D(ARGS) /* structure holding parms, inputs, outputs, etc. */ cm_message_printf("Insufficient memory to read file %s", PARAM(file)); loc->state->atend = 1; loc->init_err = 1; + if(cFile) free(cFile); + if(cThisLine) free(cThisLine); return; } /* read whole file into cFile */ diff --git a/src/xspice/icm/table/table3D/cfunc.mod b/src/xspice/icm/table/table3D/cfunc.mod index 2fa50652d..a3d687d0f 100644 --- a/src/xspice/icm/table/table3D/cfunc.mod +++ b/src/xspice/icm/table/table3D/cfunc.mod @@ -458,6 +458,8 @@ cm_table3D(ARGS) /* structure holding parms, inputs, outputs, etc. */ cm_message_printf("Insufficient memory to read file %s", PARAM(file)); loc->state->atend = 1; loc->init_err = 1; + if(cFile) free(cFile); + if(cThisLine) free(cThisLine); return; } /* read whole file into cFile */