Mercurial > dovecot > core-2.2
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