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)