[dovecot-cvs] dovecot/src/lib imem.c,1.9,1.10 imem.h,1.8,1.9 mempool.h,1.13,1.14

cras at procontrol.fi cras at procontrol.fi
Sun Sep 21 20:39:31 EEST 2003


Update of /home/cvs/dovecot/src/lib
In directory danu:/tmp/cvs-serv27941/lib

Modified Files:
	imem.c imem.h mempool.h 
Log Message:
Make i_free(), p_free() and pool_unref() calls also set the given parameter
to NULL.



Index: imem.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib/imem.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- imem.c	26 Aug 2003 21:18:16 -0000	1.9
+++ imem.c	21 Sep 2003 16:39:29 -0000	1.10
@@ -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);

Index: imem.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib/imem.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- imem.h	10 Jan 2003 20:58:28 -0000	1.8
+++ imem.h	21 Sep 2003 16:39:29 -0000	1.9
@@ -6,9 +6,15 @@
 /* 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);

Index: mempool.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib/mempool.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- mempool.h	21 Sep 2003 16:26:35 -0000	1.13
+++ mempool.h	21 Sep 2003 16:39:29 -0000	1.14
@@ -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_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) \
+#define p_free(pool, mem) \
 	STMT_START { \
-          p_free(pool, rec); \
-          (rec) = NULL; \
+          (pool)->free(pool, mem); \
+          (mem) = NULL; \
 	} STMT_END
+
+#define p_clear(pool) (pool)->clear(pool)
 
 #endif



More information about the dovecot-cvs mailing list