Index: fusl/src/malloc/lite_malloc.c |
diff --git a/fusl/src/malloc/lite_malloc.c b/fusl/src/malloc/lite_malloc.c |
index a7e4a9f7b511bdbf2db4d5018e5088c19ed38570..65643514f35e4221e7f3f3dfd83241aecb4062b0 100644 |
--- a/fusl/src/malloc/lite_malloc.c |
+++ b/fusl/src/malloc/lite_malloc.c |
@@ -6,44 +6,45 @@ |
#define ALIGN 16 |
-void *__expand_heap(size_t *); |
- |
-static void *__simple_malloc(size_t n) |
-{ |
- static char *cur, *end; |
- static volatile int lock[2]; |
- size_t align=1, pad; |
- void *p; |
- |
- if (!n) n++; |
- while (align<n && align<ALIGN) |
- align += align; |
- |
- LOCK(lock); |
- |
- pad = -(uintptr_t)cur & align-1; |
- |
- if (n <= SIZE_MAX/2 + ALIGN) n += pad; |
- |
- if (n > end-cur) { |
- size_t m = n; |
- char *new = __expand_heap(&m); |
- if (!new) { |
- UNLOCK(lock); |
- return 0; |
- } |
- if (new != end) { |
- cur = new; |
- n -= pad; |
- pad = 0; |
- } |
- end = new + m; |
- } |
- |
- p = cur + pad; |
- cur += n; |
- UNLOCK(lock); |
- return p; |
+void* __expand_heap(size_t*); |
+ |
+static void* __simple_malloc(size_t n) { |
+ static char *cur, *end; |
+ static volatile int lock[2]; |
+ size_t align = 1, pad; |
+ void* p; |
+ |
+ if (!n) |
+ n++; |
+ while (align < n && align < ALIGN) |
+ align += align; |
+ |
+ LOCK(lock); |
+ |
+ pad = -(uintptr_t)cur & align - 1; |
+ |
+ if (n <= SIZE_MAX / 2 + ALIGN) |
+ n += pad; |
+ |
+ if (n > end - cur) { |
+ size_t m = n; |
+ char* new = __expand_heap(&m); |
+ if (!new) { |
+ UNLOCK(lock); |
+ return 0; |
+ } |
+ if (new != end) { |
+ cur = new; |
+ n -= pad; |
+ pad = 0; |
+ } |
+ end = new + m; |
+ } |
+ |
+ p = cur + pad; |
+ cur += n; |
+ UNLOCK(lock); |
+ return p; |
} |
weak_alias(__simple_malloc, malloc); |