From 8f6d296a23675687177afd697cb28d195252466e Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 8 May 2024 12:32:10 +0200 Subject: Add a heap allocator --- include/alloc.h | 1 + lib/alloc/heapalloc.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 lib/alloc/heapalloc.c diff --git a/include/alloc.h b/include/alloc.h index bcee92f..3074b27 100644 --- a/include/alloc.h +++ b/include/alloc.h @@ -22,6 +22,7 @@ typedef struct { [[nodiscard, gnu::returns_nonnull]] void *bufalloc(void *, size_t, size_t); [[nodiscard]] void *bufalloc_noterm(void *, size_t, size_t); +[[nodiscard]] void *heapalloc(void *, void *, size_t, size_t); [[_mlib_pure, _mlib_inline]] static inline arena diff --git a/lib/alloc/heapalloc.c b/lib/alloc/heapalloc.c new file mode 100644 index 0000000..0a698f0 --- /dev/null +++ b/lib/alloc/heapalloc.c @@ -0,0 +1,12 @@ +#include + +#include "alloc.h" + +void * +heapalloc(void *, void *ptr, size_t, size_t new) +{ + if (new > 0) + return realloc(ptr, new); + free(ptr); + return nullptr; +} -- cgit v1.2.3