From ab409ad62e52e3977255b0d291135f61aab79191 Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 25 Mar 2017 19:47:36 +0100 Subject: [PATCH] protect vec_free() and free_pnode() macro for use in non braced blocks if () vec_free() --- src/frontend/parse.h | 6 +++++- src/frontend/vectors.h | 6 +++++- src/include/ngspice/fteext.h | 12 ++++++++++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/frontend/parse.h b/src/frontend/parse.h index 306b0c456..de2e6a7be 100644 --- a/src/frontend/parse.h +++ b/src/frontend/parse.h @@ -10,7 +10,11 @@ #include "ngspice/wordlist.h" #ifndef free_pnode -#define free_pnode(ptr) free_pnode_x(ptr); ptr=NULL; +#define free_pnode(ptr) \ + do { \ + free_pnode_x(ptr); \ + ptr = NULL; \ + } while(0) #endif diff --git a/src/frontend/vectors.h b/src/frontend/vectors.h index babdd339d..2ddc5e875 100644 --- a/src/frontend/vectors.h +++ b/src/frontend/vectors.h @@ -6,7 +6,11 @@ #ifndef ngspice_VECTORS_H #define ngspice_VECTORS_H -#define vec_free(ptr) vec_free_x(ptr); ptr=NULL +#define vec_free(ptr) \ + do { \ + vec_free_x(ptr); \ + ptr = NULL; \ + } while(0) #endif diff --git a/src/include/ngspice/fteext.h b/src/include/ngspice/fteext.h index fe1e33f21..0bd5e28fd 100644 --- a/src/include/ngspice/fteext.h +++ b/src/include/ngspice/fteext.h @@ -262,7 +262,11 @@ extern struct func func_not; extern struct func func_uminus; extern struct pnode *ft_getpnames(wordlist *wl, bool check); extern struct pnode *alloc_pnode(void); -#define free_pnode(ptr) free_pnode_x(ptr); ptr=NULL +#define free_pnode(ptr) \ + do { \ + free_pnode_x(ptr); \ + ptr = NULL; \ + } while(0) extern void free_pnode_x(struct pnode *t); /* plotcurve.c */ @@ -335,7 +339,11 @@ extern struct plot *plot_alloc(char *name); extern struct plot *plot_list; extern int plotl_changed; extern void plot_add(struct plot *pl); -#define vec_free(ptr) vec_free_x(ptr); ptr=NULL +#define vec_free(ptr) \ + do { \ + vec_free_x(ptr); \ + ptr = NULL; \ + } while(0) extern void vec_free_x(struct dvec *v); extern void vec_gc(void); extern void ft_loadfile(char *file);