util: Remove usages of linear_realloc()

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>
This commit is contained in:
Caio Oliveira
2023-09-18 02:19:21 -07:00
committed by Marge Bot
parent 63ab985511
commit 1486742b26
+5 -2
View 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';