aboutsummaryrefslogtreecommitdiffstats
path: root/qemu-malloc.c
diff options
context:
space:
mode:
authorDavid 'Digit' Turner <digit@android.com>2010-05-10 18:48:35 -0700
committerDavid 'Digit' Turner <digit@android.com>2010-05-11 17:10:19 -0700
commit2910f183ddd5286911bc1e3499ea93cb57de8b75 (patch)
tree43cfd4b9a6697496732722ff7f2fb66d5782597c /qemu-malloc.c
parent0119362f0d74ca74f3ea743f6e0e527a9edcc474 (diff)
downloadexternal_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.c19
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();
}