From 97e0c0f37ecac104167097fa230b00e1f9ad35c1 Mon Sep 17 00:00:00 2001 From: holger Date: Tue, 27 Dec 2022 18:02:04 +0100 Subject: [PATCH] Prevent memory leak while "PREDICTOR" is selected --- src/maths/ni/nidest.c | 7 +++++++ src/spicelib/analysis/cktdest.c | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/maths/ni/nidest.c b/src/maths/ni/nidest.c index 3258f3c89..06827285c 100644 --- a/src/maths/ni/nidest.c +++ b/src/maths/ni/nidest.c @@ -16,6 +16,7 @@ Author: 1985 Thomas L. Quarles void NIdestroy(CKTcircuit *ckt) { + int i; if (ckt->CKTmatrix) SMPdestroy(ckt->CKTmatrix); ckt->CKTmatrix = NULL; @@ -33,4 +34,10 @@ NIdestroy(CKTcircuit *ckt) SENdestroy(ckt->CKTsenInfo); } #endif +#ifdef PREDICTOR + if(ckt->CKTpred) FREE(ckt->CKTpred); + for( i=0;i<8;i++) { + if(ckt->CKTsols[i]) FREE(ckt->CKTsols[i]); + } +#endif } diff --git a/src/spicelib/analysis/cktdest.c b/src/spicelib/analysis/cktdest.c index ca4c67786..eb95283e2 100644 --- a/src/spicelib/analysis/cktdest.c +++ b/src/spicelib/analysis/cktdest.c @@ -90,6 +90,13 @@ CKTdestroy(CKTcircuit *ckt) FREE(ckt->CKTirhsOld); FREE(ckt->CKTirhsSpare); +#ifdef PREDICTOR + if(ckt->CKTpred) FREE(ckt->CKTpred); + for( i=0;i<8;i++) { + if(ckt->CKTsols[i]) FREE(ckt->CKTsols[i]); + } +#endif + FREE(ckt->CKTstat->STATdevNum); FREE(ckt->CKTstat); FREE(ckt->CKThead);