From eb53be9312107ce3de3ac083a37a8ba5c3122a62 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 10 Feb 2025 09:19:21 -0400 Subject: [PATCH] MT#61625 add type safety to arena_malloc Change-Id: Ia94e5b8a6099d2e424d71205ce365e1a4d25479c --- include/arena.h | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/include/arena.h b/include/arena.h index daf692565..577c6addf 100644 --- a/include/arena.h +++ b/include/arena.h @@ -11,13 +11,20 @@ extern __thread memory_arena_t *memory_arena; #define memory_arena_init bencode_buffer_init #define memory_arena_free bencode_buffer_free -INLINE void *memory_arena_alloc(size_t l) { +INLINE void *__memory_arena_alloc(size_t len) { void *ret; - ret = bencode_buffer_alloc(memory_arena, l); + ret = bencode_buffer_alloc(memory_arena, len); return ret; } +#define memory_arena_alloc(type) ((type *) __memory_arena_alloc(sizeof(type))) +INLINE void *__memory_arena_alloc0(size_t len) { + void *ret = __memory_arena_alloc(len); + memset(ret, 0, len); + return ret; +} +#define memory_arena_alloc0(type) ((type *) __memory_arena_alloc0(sizeof(type))) INLINE char *memory_arena_dup(const char *b, size_t len) { - char *ret = memory_arena_alloc(len + 1); + char *ret = __memory_arena_alloc(len + 1); memcpy(ret, b, len); ret[len] = '\0'; return ret; @@ -65,8 +72,7 @@ INLINE str memory_arena_str_cpy_c(const char *in) { return memory_arena_str_cpy_len(in, in ? strlen(in) : 0); } INLINE str *memory_arena_str_dup(const str *in) { - str *out; - out = memory_arena_alloc(sizeof(*out)); + __auto_type out = memory_arena_alloc(str); *out = memory_arena_str_cpy_len(in->s, in->len); return out; }