From 2d0bfbd0fafe5e869919120758903801f91530fa Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Fri, 3 Dec 2021 14:56:30 +0100 Subject: [PATCH] fftools/cmdutils: Use av_dynarray_add_nofree() Simplifies code and reduces the number of allocations a bit by overallocating. Signed-off-by: Andreas Rheinhardt --- fftools/cmdutils.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index 0b57552e5c..3c8e5a82cd 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -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 *new_elem, **array; + void *new_elem; - memcpy(&array, ptr, sizeof(array)); - if (*nb_elems == INT_MAX) { - av_log(NULL, AV_LOG_ERROR, "Array too big.\n"); + if (!(new_elem = av_mallocz(elem_size)) || + av_dynarray_add_nofree(ptr, nb_elems, new_elem) < 0) { + av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n"); 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; }