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:
+5
-2
@@ -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';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user