changeset 1784:0e72d6ab85ad HEAD

Make i_free(), p_free() and pool_unref() calls also set the given parameter to NULL.
author Timo Sirainen <tss@iki.fi>
date Sun, 21 Sep 2003 19:39:29 +0300
parents 46d2094ac470
children 35f1682e311b
files src/lib/imem.c src/lib/imem.h src/lib/mempool.h
diffstat 3 files changed, 20 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/imem.c	Sun Sep 21 19:26:35 2003 +0300
+++ b/src/lib/imem.c	Sun Sep 21 19:39:29 2003 +0300
@@ -9,11 +9,6 @@
         return p_malloc(default_pool, size);
 }
 
-void i_free(void *mem)
-{
-        p_free(default_pool, mem);
-}
-
 void *i_realloc(void *mem, size_t old_size, size_t new_size)
 {
         return p_realloc(default_pool, mem, old_size, new_size);
--- a/src/lib/imem.h	Sun Sep 21 19:26:35 2003 +0300
+++ b/src/lib/imem.h	Sun Sep 21 19:39:29 2003 +0300
@@ -6,10 +6,16 @@
 /* For easy allocation of memory from default memory pool. */
 #define i_new(type, count) \
         ((type *) i_malloc(sizeof(type) * (count)))
+
 void *i_malloc(size_t size);
-void i_free(void *mem);
 void *i_realloc(void *mem, size_t old_size, size_t new_size);
 
+#define i_free(mem) \
+	STMT_START { \
+          p_free(default_pool, mem); \
+          (mem) = NULL; \
+	} STMT_END
+
 /* string functions */
 char *i_strdup(const char *str);
 char *i_strdup_empty(const char *str); /* like i_strdup(), but if str == "", return NULL */
--- a/src/lib/mempool.h	Sun Sep 21 19:26:35 2003 +0300
+++ b/src/lib/mempool.h	Sun Sep 21 19:39:29 2003 +0300
@@ -49,22 +49,24 @@
 /* Pools should be used through these macros: */
 #define pool_get_name(pool) (pool)->get_name(pool)
 #define pool_ref(pool) (pool)->ref(pool)
-#define pool_unref(pool) (pool)->unref(pool)
+#define pool_unref(pool) \
+	STMT_START { \
+          (pool)->unref(pool); \
+          (pool) = NULL; \
+	} STMT_END
+
+#define p_new(pool, type, count) \
+	((type *) p_malloc(pool, sizeof(type) * (count)))
 
 #define p_malloc(pool, size) (pool)->malloc(pool, size)
 #define p_realloc(pool, mem, old_size, new_size) \
 	(pool)->realloc(pool, mem, old_size, new_size)
-#define p_free(pool, mem) (pool)->free(pool, mem)
+#define p_free(pool, mem) \
+	STMT_START { \
+          (pool)->free(pool, mem); \
+          (mem) = NULL; \
+	} STMT_END
 
 #define p_clear(pool) (pool)->clear(pool)
 
-/* Extra macros to make life easier: */
-#define p_new(pool, type, count) \
-	((type *) p_malloc(pool, sizeof(type) * (count)))
-#define p_free_and_null(pool, rec) \
-	STMT_START { \
-          p_free(pool, rec); \
-          (rec) = NULL; \
-	} STMT_END
-
 #endif