diff --git a/src/pool.c b/src/pool.c index d9d8095c4..60f21d677 100644 --- a/src/pool.c +++ b/src/pool.c @@ -40,6 +40,21 @@ int mem_poison_byte = -1; static int mem_fail_rate = 0; #endif +#if defined(HA_HAVE_MALLOC_TRIM) +/* ask the allocator to trim memory pools */ +static void trim_all_pools(void) +{ + if (using_libc_allocator) + malloc_trim(0); +} + +#else + +static void trim_all_pools(void) +{ +} +#endif + /* Try to find an existing shared pool with the same characteristics and * returns it, otherwise creates this one. NULL is returned if no memory * is available for a new creation. Two flags are supported : @@ -275,9 +290,7 @@ void pool_flush(struct pool_head *pool) /* This function might ask the malloc library to trim its buffers. */ void pool_gc(struct pool_head *pool_ctx) { -#if defined(HA_HAVE_MALLOC_TRIM) - malloc_trim(0); -#endif + trim_all_pools(); } #else /* CONFIG_HAP_NO_GLOBAL_POOLS */ @@ -339,9 +352,7 @@ void pool_gc(struct pool_head *pool_ctx) } } -#if defined(HA_HAVE_MALLOC_TRIM) - malloc_trim(0); -#endif + trim_all_pools(); if (!isolated) thread_release(); @@ -358,9 +369,7 @@ void pool_flush(struct pool_head *pool) /* This function might ask the malloc library to trim its buffers. */ void pool_gc(struct pool_head *pool_ctx) { -#if defined(HA_HAVE_MALLOC_TRIM) - malloc_trim(0); -#endif + trim_all_pools(); } #endif /* CONFIG_HAP_POOLS */