diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-06-04 18:27:40 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-06-04 18:27:40 +0100 |
commit | 0b9bfe49099f2b50034f26f4c043657efe25fcb8 (patch) | |
tree | 5b6c0c4f5622fef6da6eea96d8cfd706cabc5865 /src/libutil/mem_pool.c | |
parent | acfa259ac6d130415a9c1c578ca3f6e17b595009 (diff) | |
download | rspamd-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.c | 8 |
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 * |