diff --git a/src/xpdev/gen_defs.h b/src/xpdev/gen_defs.h index d9c3ba2715bdc19b57179c10f6ac917c24941170..a2a7e97b7af684ace68452823a17dd3f8fd0d0d3 100644 --- a/src/xpdev/gen_defs.h +++ b/src/xpdev/gen_defs.h @@ -249,5 +249,11 @@ typedef struct { #define FREE free #endif +/********************************/ +/* Handy Pointer-freeing Macros */ +/********************************/ +#define FREE_AND_NULL(x) if(x!=NULL) { FREE(x); x=NULL; } +#define FREE_LIST_ITEMS(list,i) for(i=0;list && list[i];i++) { FREE_AND_NULL(list[i]); } +#define FREE_LIST(list,i) FREE_LIST_ITEMS(list,i) FREE_AND_NULL(list) #endif /* Don't add anything after this #endif statement */ diff --git a/src/xpdev/str_list.c b/src/xpdev/str_list.c index b616fa19260d70dd609c6fdef83fdbd881a1de6c..1edabb5241ad0439300a2443fc6c9fb1794413c2 100644 --- a/src/xpdev/str_list.c +++ b/src/xpdev/str_list.c @@ -344,11 +344,7 @@ void strListFreeStrings(str_list_t list) { size_t i; - if(list!=NULL) { - for(i=0; list[i]!=NULL; i++) - free(list[i]); - list[0]=NULL; /* terminate */ - } + FREE_LIST_ITEMS(list,i); } void strListFree(str_list_t* list)