/* i_free() and i_free_and_null() are now guaranteed to both set mem=NULL,
so either one of them can be used. */
-#define i_free(mem) p_free_and_null(default_pool, mem)
+#ifndef STATIC_CHECKER
+# define i_free(mem) p_free_and_null(default_pool, mem)
+#else
+# define i_free(mem) \
+ STMT_START { \
+ pool_system_free(default_pool, mem); \
+ (mem) = NULL; \
+ } STMT_END
+#endif
#define i_free_and_null(mem) i_free(mem)
/* string functions */
static void pool_system_ref(pool_t pool);
static void pool_system_unref(pool_t *pool);
static void *pool_system_malloc(pool_t pool, size_t size);
-static void pool_system_free(pool_t pool, void *mem);
static void *pool_system_realloc(pool_t pool, void *mem,
size_t old_size, size_t new_size);
static void pool_system_clear(pool_t pool);
return mem;
}
-static void pool_system_free(pool_t pool ATTR_UNUSED,
- void *mem ATTR_UNUSED)
+void pool_system_free(pool_t pool ATTR_UNUSED, void *mem ATTR_UNUSED)
{
#ifdef DEBUG
int old_errno = errno;
/* Returns how much system memory has been allocated for this pool. */
size_t pool_alloconly_get_total_alloc_size(pool_t pool);
+/* private: */
+void pool_system_free(pool_t pool, void *mem);
+
#endif