changeset 3356:02479b3894cc HEAD

Added i_free_and_null() macro and first use case.
author Timo Sirainen <tss@iki.fi>
date Tue, 03 May 2005 20:02:42 +0300
parents ab3b9ed3a1a5
children 2d8874b023ea
files src/lib/failures.c src/lib/imem.h
diffstat 2 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/failures.c	Tue May 03 20:02:24 2005 +0300
+++ b/src/lib/failures.c	Tue May 03 20:02:42 2005 +0300
@@ -438,9 +438,6 @@
 		log_info_fd = stderr;
 	}
 
-	i_free(log_prefix);
-	log_prefix = NULL;
-
-	i_free(log_stamp_format);
-        log_stamp_format = NULL;
+	i_free_and_null(log_prefix);
+	i_free_and_null(log_stamp_format);
 }
--- a/src/lib/imem.h	Tue May 03 20:02:24 2005 +0300
+++ b/src/lib/imem.h	Tue May 03 20:02:42 2005 +0300
@@ -10,12 +10,19 @@
 void *i_malloc(size_t size);
 void *i_realloc(void *mem, size_t old_size, size_t new_size);
 
+/* Free the memory. Currently it also sets memory to NULL, but that shouldn't
+   be relied on as it's only extra safety check. It might as well be later
+   changed to some invalid pointer causing segfault, or removed completely
+   in some "optimization".. */
 #define i_free(mem) \
 	STMT_START { \
           p_free(default_pool, mem); \
           (mem) = NULL; \
 	} STMT_END
 
+/* A macro that's guaranteed to set mem = NULL. */
+#define i_free_and_null(mem) i_free(mem)
+
 /* string functions */
 char *i_strdup(const char *str);
 char *i_strdup_empty(const char *str); /* like i_strdup(), but if str == "", return NULL */