From 4f64563ded3e62b7bd42340001cdb2779a362379 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Mon, 30 Aug 2004 06:51:42 +0000
Subject: [PATCH] Created handy generic pointer-freeing macros in gen_defs.h:
 FREE_AND_NULL, FREE_LIST, and FREE_LIST_ITEMS.

---
 src/xpdev/gen_defs.h | 6 ++++++
 src/xpdev/str_list.c | 6 +-----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/xpdev/gen_defs.h b/src/xpdev/gen_defs.h
index d9c3ba2715..a2a7e97b7a 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 b616fa1926..1edabb5241 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)
-- 
GitLab