Mercurial > dovecot > original-hg > dovecot-1.2
changeset 422:5138499f90ad HEAD
p_realloc() was buggy
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 14 Oct 2002 23:26:45 +0300 |
parents | 37c5e6ef22f4 |
children | 08b99ae95f30 |
files | src/lib/mempool-alloconly.c |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/mempool-alloconly.c Mon Oct 14 23:26:38 2002 +0300 +++ b/src/lib/mempool-alloconly.c Mon Oct 14 23:26:45 2002 +0300 @@ -229,17 +229,19 @@ size = MEM_ALIGN(size); /* see if we can directly grow it */ - if (pool_try_grow(apool, mem, size)) - return mem; + if (!pool_try_grow(apool, mem, size)) { + /* slow way - allocate + copy */ + new_mem = pool_alloconly_malloc(pool, size); + memcpy(new_mem, mem, old_size); + mem = new_mem; + } - /* slow way - allocate + copy */ - new_mem = pool_alloconly_malloc(pool, size); if (size > old_size) { /* clear new data */ - memset(new_mem + old_size, 0, size - old_size); + memset(mem + old_size, 0, size - old_size); } - return new_mem; + return mem; } static void pool_alloconly_clear(Pool pool)