From 1486742b26943c65f21867969309cbc970d363dd Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Mon, 18 Sep 2023 02:19:21 -0700 Subject: [PATCH] util: Remove usages of linear_realloc() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Note that for linear allocator, the realloc will always allocate new memory. In both cases that realloc was used, the existing size was known, so we can just allocate and do the copy ourselves. Reviewed-by: Marek Olšák Part-of: --- src/util/ralloc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/util/ralloc.c b/src/util/ralloc.c index 9a59ec67887..a7ce0e424c8 100644 --- a/src/util/ralloc.c +++ b/src/util/ralloc.c @@ -1226,10 +1226,12 @@ linear_vasprintf_rewrite_tail(linear_ctx *ctx, char **str, size_t *start, new_length = u_printf_length(fmt, args); - ptr = linear_realloc(ctx, *str, *start + new_length + 1); + ptr = linear_alloc_child(ctx, *start + new_length + 1); if (unlikely(ptr == NULL)) return false; + memcpy(ptr, *str, *start); + vsnprintf(ptr + *start, new_length + 1, fmt, args); *str = ptr; *start += new_length; @@ -1245,10 +1247,11 @@ linear_cat(linear_ctx *ctx, char **dest, const char *str, unsigned n) assert(dest != NULL && *dest != NULL); existing_length = strlen(*dest); - both = linear_realloc(ctx, *dest, existing_length + n + 1); + both = linear_alloc_child(ctx, existing_length + n + 1); if (unlikely(both == NULL)) return false; + memcpy(both, *dest, existing_length); memcpy(both + existing_length, str, n); both[existing_length + n] = '\0';