[FFmpeg-cvslog] fftools/cmdutils: Use av_dynarray_add_nofree()

Andreas Rheinhardt git at videolan.org
Sun Dec 5 19:00:10 EET 2021


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Fri Dec  3 14:56:30 2021 +0100| [2d0bfbd0fafe5e869919120758903801f91530fa] | committer: Andreas Rheinhardt

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 at outlook.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2d0bfbd0fafe5e869919120758903801f91530fa
---

 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;
 }
 



More information about the ffmpeg-cvslog mailing list