From 059f2b6c0da563042a50046c03661f80ecefaa19 Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 26 Mar 2016 18:39:00 +0100 Subject: [PATCH] fix garbage collection of vectors returned by ft_evaluate() --- src/frontend/com_let.c | 4 ++-- src/frontend/cpitf.c | 2 +- src/frontend/device.c | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/frontend/com_let.c b/src/frontend/com_let.c index 5ef19204b..41005a049 100644 --- a/src/frontend/com_let.c +++ b/src/frontend/com_let.c @@ -108,7 +108,7 @@ com_let(wordlist *wl) indices[numdims++] = j; /* va: garbage collection for t, if pnode `names' is no simple value */ - if (names != NULL && names->pn_value == NULL && t != NULL) + if (names && !names->pn_value && t) vec_free(t); free_pnode(names); /* frees also t, if pnode `names' is simple value */ @@ -235,7 +235,7 @@ com_let(wordlist *wl) quit: /* va: garbage collection for t, if pnode `names' is no simple value */ - if (names != NULL && names->pn_value == NULL && t != NULL) + if (names && !names->pn_value && t) vec_free(t); free_pnode(names); /* frees also t, if pnode `names' is simple value */ tfree(p); diff --git a/src/frontend/cpitf.c b/src/frontend/cpitf.c index da99fda49..669bdedbd 100644 --- a/src/frontend/cpitf.c +++ b/src/frontend/cpitf.c @@ -317,7 +317,7 @@ cp_istrue(wordlist *wl) rv = !vec_iszero(v); /* va: garbage collection for v, if pnode names is no simple value */ - if (names->pn_value == NULL && v != NULL) + if (names && !names->pn_value && v) vec_free(v); free_pnode(names); /* free also v, if pnode names is simple value */ diff --git a/src/frontend/device.c b/src/frontend/device.c index bd5375eb5..1392ad490 100644 --- a/src/frontend/device.c +++ b/src/frontend/device.c @@ -1350,11 +1350,10 @@ com_alter_common(wordlist *wl, int do_model) if_setparam(ft_curckt->ci_ckt, &dev, param, dv, do_model); +done: /* va: garbage collection for dv, if pnode names is no simple value */ - if (names->pn_value == NULL && dv != NULL) + if (names && !names->pn_value && dv) vec_free(dv); - -done: free_pnode(names); /* free also dv, if pnode names is simple value */ }