]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Fix calculation of pool free space.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 4 Jun 2015 17:27:40 +0000 (18:27 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 4 Jun 2015 17:27:40 +0000 (18:27 +0100)
src/libutil/mem_pool.c

index 3d439ed01db4214d4f9a29544b4bf0f81b6365b1..7927fdaceabc24444575bccc402ccb81db048b62 100644 (file)
@@ -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 *