aboutsummaryrefslogtreecommitdiffstats
path: root/src/libutil/mem_pool.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-06-04 18:27:40 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-06-04 18:27:40 +0100
commit0b9bfe49099f2b50034f26f4c043657efe25fcb8 (patch)
tree5b6c0c4f5622fef6da6eea96d8cfd706cabc5865 /src/libutil/mem_pool.c
parentacfa259ac6d130415a9c1c578ca3f6e17b595009 (diff)
downloadrspamd-0b9bfe49099f2b50034f26f4c043657efe25fcb8.tar.gz
rspamd-0b9bfe49099f2b50034f26f4c043657efe25fcb8.zip
Fix calculation of pool free space.
Diffstat (limited to 'src/libutil/mem_pool.c')
-rw-r--r--src/libutil/mem_pool.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libutil/mem_pool.c b/src/libutil/mem_pool.c
index 3d439ed01..7927fdace 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 *