From eaebab6882de89e29f307ef3be5d872e265e402c Mon Sep 17 00:00:00 2001 From: h_vogt Date: Sat, 25 Jun 2016 14:59:04 +0200 Subject: [PATCH] add dicoS->linecount to safely delete dynrefptr[i], linecount may change if circuits are changed or deleted. --- src/frontend/numparam/numparam.h | 1 + src/frontend/numparam/spicenum.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/frontend/numparam/numparam.h b/src/frontend/numparam/numparam.h index 4d6b32f3f..4e4b90997 100644 --- a/src/frontend/numparam/numparam.h +++ b/src/frontend/numparam/numparam.h @@ -46,6 +46,7 @@ typedef struct { /* the input scanner data structure */ char **dynrefptr; char *dyncategory; int hs_compatibility; /* allow extra keywords */ + int linecount; /* number of lines in deck */ } dico_t; diff --git a/src/frontend/numparam/spicenum.c b/src/frontend/numparam/spicenum.c index 4685b8874..aa0a10b46 100644 --- a/src/frontend/numparam/spicenum.c +++ b/src/frontend/numparam/spicenum.c @@ -456,6 +456,8 @@ nupa_init(char *srcfile) dicoS->dyncategory[i] = '?'; } + dicoS->linecount = dynmaxline; + if (srcfile != NULL) scopys(&dicoS->srcfile, srcfile); } @@ -470,7 +472,7 @@ nupa_del_dicoS(void) if(!dicoS) return; - for (i = dynmaxline; i >= 0; i--) + for (i = dicoS->linecount; i >= 0; i--) txfree(dicoS->dynrefptr[i]); txfree(dicoS->dynrefptr);