From 598fcf2bf92649ec2ffa43bd96aaff1ddf8339c5 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 23 Jan 2026 14:14:44 -0500 Subject: [PATCH] util: add linear_memdup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit convenience method; linear version of ralloc_memdup. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Marek Olšák Part-of: --- src/util/ralloc.c | 12 ++++++++++++ src/util/ralloc.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/util/ralloc.c b/src/util/ralloc.c index ba560c8387a..330d973d835 100644 --- a/src/util/ralloc.c +++ b/src/util/ralloc.c @@ -1195,6 +1195,18 @@ ralloc_parent_of_linear_context(linear_ctx *ctx) * calls are different. */ +void * +linear_memdup(linear_ctx *ctx, const void *mem, size_t n) +{ + void *ptr = linear_alloc_child(ctx, n); + + if (unlikely(ptr == NULL)) + return NULL; + + memcpy(ptr, mem, n); + return ptr; +} + char * linear_strdup(linear_ctx *ctx, const char *str) { diff --git a/src/util/ralloc.h b/src/util/ralloc.h index 2d014a0298b..b332d2a32a1 100644 --- a/src/util/ralloc.h +++ b/src/util/ralloc.h @@ -672,6 +672,7 @@ void *linear_zalloc_child_array(linear_ctx *ctx, size_t size, unsigned count) MA char *linear_strdup(linear_ctx *ctx, const char *str) MALLOCLIKE; char *linear_asprintf(linear_ctx *ctx, const char *fmt, ...) PRINTFLIKE(2, 3) MALLOCLIKE; char *linear_vasprintf(linear_ctx *ctx, const char *fmt, va_list args) MALLOCLIKE; +void *linear_memdup(linear_ctx *ctx, const void *mem, size_t n) MALLOCLIKE; bool linear_asprintf_append(linear_ctx *ctx, char **str, const char *fmt, ...) PRINTFLIKE(3, 4); bool linear_vasprintf_append(linear_ctx *ctx, char **str, const char *fmt, va_list args);