From f0ff8b230bf3a6accc075a4e636656647027802c Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Sat, 20 Jul 2024 17:54:43 +0200 Subject: [PATCH] Remove sourceinfo upon shared ngspice reset. Remove memory leaks. --- src/frontend/inpcom.c | 2 +- src/sharedspice.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index 2354af385..be2cc078d 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -1288,7 +1288,7 @@ static struct inp_read_t inp_read(FILE* fp, int call_depth, const char* dir_name add_to_sourcepath(sourcelineinfo, NULL); } - wl_append_word(&sourceinfo, &sourceinfo, sourcelineinfo); + sourceinfo = wl_cons(sourcelineinfo, sourceinfo); /* First read in all lines & put them in the struct cc */ for (;;) { diff --git a/src/sharedspice.c b/src/sharedspice.c index 39ecafa08..291f87070 100644 --- a/src/sharedspice.c +++ b/src/sharedspice.c @@ -352,6 +352,8 @@ static char* outstorage(char*, bool); static void printsend(void); #endif +extern wordlist* sourceinfo; + static int totalreset(void); extern void rem_controls(void); extern void destroy_wallace(void); @@ -2464,6 +2466,10 @@ static int totalreset(void) wordlist all = { "all", NULL, NULL }; wordlist star = { "*", NULL, NULL }; + tfree(Infile_Path); + wl_free(sourceinfo); + sourceinfo = NULL; + com_destroy(&all); com_unalias(&star); com_undefine(&star); @@ -2480,7 +2486,6 @@ static int totalreset(void) rem_controls(); while (ft_curckt) { - wl_delete(ft_curckt->ci_sourceinfo); com_remcirc(NULL); }