From 0b9bfe49099f2b50034f26f4c043657efe25fcb8 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 4 Jun 2015 18:27:40 +0100 Subject: [PATCH] Fix calculation of pool free space. --- src/libutil/mem_pool.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libutil/mem_pool.c b/src/libutil/mem_pool.c index 3d439ed01d..7927fdacea 100644 --- a/src/libutil/mem_pool.c +++ b/src/libutil/mem_pool.c @@ -60,12 +60,16 @@ static gboolean always_malloc = FALSE; static gsize pool_chain_free (struct _pool_chain *chain) { - return chain->len - (gsize)(chain->pos - chain->begin + MEM_ALIGNMENT); + gint64 occupied = chain->pos - chain->begin + MEM_ALIGNMENT; + + return occupied < (gint64)chain->len ? chain->len - occupied : 0; } static gsize pool_chain_free_shared (struct _pool_chain_shared *chain) { - return chain->len - (gsize)(chain->pos - chain->begin + MEM_ALIGNMENT); + gint64 occupied = chain->pos - chain->begin + MEM_ALIGNMENT; + + return occupied < (gint64)chain->len ? chain->len - occupied : 0; } static struct _pool_chain * -- 2.47.3