util: Remove usages of linear_realloc()
authorCaio Oliveira <caio.oliveira@intel.com>
Mon, 18 Sep 2023 09:19:21 +0000 (02:19 -0700)
committerMarge Bot <emma+marge@anholt.net>
Mon, 25 Sep 2023 17:26:17 +0000 (17:26 +0000)
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 <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25280>

src/util/ralloc.c

index 9a59ec6..a7ce0e4 100644 (file)
@@ -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';