From: Vsevolod Stakhov Date: Thu, 4 Jun 2015 17:27:40 +0000 (+0100) Subject: Fix calculation of pool free space. X-Git-Tag: 1.0.0~574 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0b9bfe49099f2b50034f26f4c043657efe25fcb8;p=thirdparty%2Frspamd.git Fix calculation of pool free space. --- 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 *