1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-15 14:13:16 +02:00

fftools/cmdutils: Use av_dynarray_add_nofree()

Simplifies code and reduces the number of allocations a bit
by overallocating.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt
2021-12-03 14:56:30 +01:00
parent 2e7ef008e3
commit 2d0bfbd0fa

View File

@@ -2216,19 +2216,13 @@ void *grow_array(void *array, int elem_size, int *size, int new_size)
void *allocate_array_elem(void *ptr, size_t elem_size, int *nb_elems) void *allocate_array_elem(void *ptr, size_t elem_size, int *nb_elems)
{ {
void *new_elem, **array; void *new_elem;
memcpy(&array, ptr, sizeof(array)); if (!(new_elem = av_mallocz(elem_size)) ||
if (*nb_elems == INT_MAX) { av_dynarray_add_nofree(ptr, nb_elems, new_elem) < 0) {
av_log(NULL, AV_LOG_ERROR, "Array too big.\n"); av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
exit_program(1); exit_program(1);
} }
new_elem = av_mallocz(elem_size);
if (!new_elem)
exit_program(1);
GROW_ARRAY(array, *nb_elems);
memcpy(ptr, &array, sizeof(array));
array[*nb_elems - 1] = new_elem;
return new_elem; return new_elem;
} }