diff options
author | David 'Digit' Turner <digit@android.com> | 2010-05-10 18:48:35 -0700 |
---|---|---|
committer | David 'Digit' Turner <digit@android.com> | 2010-05-11 17:10:19 -0700 |
commit | 2910f183ddd5286911bc1e3499ea93cb57de8b75 (patch) | |
tree | 43cfd4b9a6697496732722ff7f2fb66d5782597c /qemu-malloc.c | |
parent | 0119362f0d74ca74f3ea743f6e0e527a9edcc474 (diff) | |
download | external_qemu-2910f183ddd5286911bc1e3499ea93cb57de8b75.zip external_qemu-2910f183ddd5286911bc1e3499ea93cb57de8b75.tar.gz external_qemu-2910f183ddd5286911bc1e3499ea93cb57de8b75.tar.bz2 |
Upstream: Misc integration - includes qobject.h and related sources
Change-Id: Idfa93ab5c67c95a3bc1869eeaf3a84a75fe24cd6
Diffstat (limited to 'qemu-malloc.c')
-rw-r--r-- | qemu-malloc.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/qemu-malloc.c b/qemu-malloc.c index 295d185..5d9e34d 100644 --- a/qemu-malloc.c +++ b/qemu-malloc.c @@ -42,22 +42,29 @@ void qemu_free(void *ptr) free(ptr); } +static int allow_zero_malloc(void) +{ +#if defined(CONFIG_ZERO_MALLOC) + return 1; +#else + return 0; +#endif +} + void *qemu_malloc(size_t size) { - if (!size) { + if (!size && !allow_zero_malloc()) { abort(); } - return oom_check(malloc(size)); + return oom_check(malloc(size ? size : 1)); } void *qemu_realloc(void *ptr, size_t size) { if (size) { return oom_check(realloc(ptr, size)); - } else { - if (ptr) { - return realloc(ptr, size); - } + } else if (allow_zero_malloc()) { + return oom_check(realloc(ptr, size ? size : 1)); } abort(); } |