com32's realloc function syslinux-3.20-pre5
authorKenneth Fyfe <kenfyfe@conkersoft.co.uk>
Sat, 14 Jan 2006 23:51:59 +0000 (23:51 +0000)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 16 Jan 2006 18:26:04 +0000 (10:26 -0800)
Hello list,

I've been playing with com32 programs lately and I've come across a
a problem with the realloc function in libcom32.  The code that rounds
up the size looks to be missing a '~' operator, resulting in it
truncating every request to a size of 0-15 bytes.

The little patch below fixes it up to match the corresponding line in
malloc, which makes it work for me.

K.

com32/lib/realloc.c

index 577c200..67a2783 100644 (file)
@@ -24,7 +24,7 @@ void *realloc(void *ptr, size_t size)
   }
 
   /* Add the obligatory arena header, and round up */
-  size = (size+2*sizeof(struct arena_header)-1) & ARENA_SIZE_MASK;
+  size = (size+2*sizeof(struct arena_header)-1) & ~ARENA_SIZE_MASK;
 
   ah = (struct free_arena_header *)
     ((struct arena_header *)ptr - 1);