Index: fusl/src/malloc/malloc_usable_size.c |
diff --git a/fusl/src/malloc/malloc_usable_size.c b/fusl/src/malloc/malloc_usable_size.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8cccd9d8d68b2e4fc6a230a7e9f0537a60c2353a |
--- /dev/null |
+++ b/fusl/src/malloc/malloc_usable_size.c |
@@ -0,0 +1,17 @@ |
+#include <malloc.h> |
+ |
+void *(*const __realloc_dep)(void *, size_t) = realloc; |
+ |
+struct chunk { |
+ size_t psize, csize; |
+ struct chunk *next, *prev; |
+}; |
+ |
+#define OVERHEAD (2*sizeof(size_t)) |
+#define CHUNK_SIZE(c) ((c)->csize & -2) |
+#define MEM_TO_CHUNK(p) (struct chunk *)((char *)(p) - OVERHEAD) |
+ |
+size_t malloc_usable_size(void *p) |
+{ |
+ return CHUNK_SIZE(MEM_TO_CHUNK(p)) - OVERHEAD; |
+} |