|
From: | Gerd Hoffmann |
Subject: | Re: [Qemu-devel] [PATCH] Permit zero-sized qemu_malloc() & friends |
Date: | Tue, 01 Dec 2009 13:40:13 +0100 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4pre) Gecko/20090922 Fedora/3.0-3.9.b4.fc12 Lightning/1.0pre Thunderbird/3.0b4 |
diff --git a/qemu-malloc.c b/qemu-malloc.c index 295d185..aeeb78b 100644 --- a/qemu-malloc.c +++ b/qemu-malloc.c @@ -44,22 +44,12 @@ void qemu_free(void *ptr) void *qemu_malloc(size_t size) { - if (!size) { - abort(); - } - return oom_check(malloc(size)); + return oom_check(malloc(size ? size : 1)); }
You might want to have a 'static uint8_t zero_length_malloc[0]' and return that instead of the magic cookie '1'. Makes the code more readable IMHO and you'll also have symbol in gdb when debugging qemu.
Even more advanced: Make zero_length_malloc page-sized and page-aligned, then munmap int, so dereferencing it actually traps.
void *qemu_realloc(void *ptr, size_t size) { + return oom_check(realloc(ptr, size ? size : 1));
qemu_realloc(qemu_malloc(0), 42); should better work correctly ... Likewise qemu_free(qemu_malloc(0)); cheers, Gerd
[Prev in Thread] | Current Thread | [Next in Thread] |