From e819fc40d7a50efd1420a5bf481b7a955b681a90 Mon Sep 17 00:00:00 2001 From: Brian Taylor Date: Tue, 5 Nov 2024 11:12:48 -0800 Subject: [PATCH] Fix some memory leaks. --- src/frontend/rawfile.c | 4 ++++ src/spicelib/parser/inpgmod.c | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/frontend/rawfile.c b/src/frontend/rawfile.c index 75bfe7060..389ace51e 100644 --- a/src/frontend/rawfile.c +++ b/src/frontend/rawfile.c @@ -414,6 +414,8 @@ raw_read(char *name) { raw_padded = TRUE; else fprintf(cp_err, "Warning: unknown flag %s\n", t); + + tfree(t); } } else if (ciprefix("no. variables:", buf)) { s = SKIP(buf); @@ -541,6 +543,8 @@ raw_read(char *name) { else fprintf(cp_err, "Error: bad var line %s\n", buf); + tfree(t); + /* Fix the name... */ if (isdigit_c(v->v_name[0]) && (r = ft_typabbrev(v ->v_type)) != NULL) { char *x = v->v_name; diff --git a/src/spicelib/parser/inpgmod.c b/src/spicelib/parser/inpgmod.c index 9d902dc81..bc98e770b 100644 --- a/src/spicelib/parser/inpgmod.c +++ b/src/spicelib/parser/inpgmod.c @@ -531,8 +531,10 @@ INPparseNumMod(CKTcircuit *ckt, INPmodel *model, INPtables *tab, char **errMessa char *parm; /* name of a parameter */ INPgetTok(&line, &parm, 1); - if (!*parm) + if (!*parm) { + FREE(parm); break; + } int idx = INPfindParm(parm, info->cardParms, info->numParms); if (idx == E_MISSING) { @@ -559,8 +561,13 @@ INPparseNumMod(CKTcircuit *ckt, INPmodel *model, INPtables *tab, char **errMessa } error = info->setCardParm(info->cardParms[idx].id, value, tmpCard); - if (info->cardParms[idx].dataType & IF_STRING) + if (info->cardParms[idx].dataType & IF_STRING) { FREE(value->sValue); + } else if (info->cardParms[idx].dataType & IF_REALVEC) { + FREE(value->v.vec.rVec); + } else if (info->cardParms[idx].dataType & IF_INTVEC) { + FREE(value->v.vec.iVec); + } if (error) return error; }