On 12/20/2016 11:36 PM, Michael Niedermayer wrote:
> On Tue, Dec 20, 2016 at 04:53:51PM -0800, Thomas Turner wrote:
>> Signed-off-by: Thomas Turner <thomas...@googlemail.com>
>> ---
>>  libavutil/Makefile           |   1 +
>>  libavutil/tests/audio_fifo.c | 196 +++++++++++++++++++++++++++++++++++++
>>  tests/fate/libavutil.mak     |   4 +
>>  tests/ref/fate/audio_fifo    | 228 
>> +++++++++++++++++++++++++++++++++++++++++++
>>  4 files changed, 429 insertions(+)
>>  create mode 100644 libavutil/tests/audio_fifo.c
>>  create mode 100644 tests/ref/fate/audio_fifo
> 
> applied
> 
> thx

This is crashing on some fate clients.

I noticed it's using malloc and free instead of the av_malloc family,
so maybe it's related to that?
Patch attached in any case, it's proper even if not the reason behind
the crashes.

>From 61898e2580a67250cb3e1fb25a4e170fd00feada Mon Sep 17 00:00:00 2001
From: James Almer <jamr...@gmail.com>
Date: Wed, 21 Dec 2016 21:41:20 -0300
Subject: [PATCH] test/audio_fifo: use av_malloc() family of functions

Signed-off-by: James Almer <jamr...@gmail.com>
---
 libavutil/tests/audio_fifo.c | 22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/libavutil/tests/audio_fifo.c b/libavutil/tests/audio_fifo.c
index dbadded..e9b1470 100644
--- a/libavutil/tests/audio_fifo.c
+++ b/libavutil/tests/audio_fifo.c
@@ -19,6 +19,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <inttypes.h>
+#include "libavutil/mem.h"
 #include "libavutil/audio_fifo.c"
 
 #define MAX_CHANNELS    32
@@ -50,15 +51,6 @@ static void ERROR(const char *str)
         exit(1);
 }
 
-static void* allocate_memory(size_t size)
-{
-    void *ptr = malloc(size);
-    if (ptr == NULL){
-        ERROR("failed to allocate memory!");
-    }
-    return ptr;
-}
-
 static void print_audio_bytes(const TestStruct *test_sample, void **data_planes, int nb_samples)
 {
     int p, b, f;
@@ -85,11 +77,15 @@ static int read_samples_from_audio_fifo(AVAudioFifo* afifo, void ***output, int
     int samples        = FFMIN(nb_samples, afifo->nb_samples);
     int tot_elements   = !(planes = av_sample_fmt_is_planar(afifo->sample_fmt))
                          ? samples : afifo->channels * samples;
-    void **data_planes = allocate_memory(sizeof(void*) * planes);
+    void **data_planes = av_malloc_array(planes, sizeof(void*));
+    if (!data_planes)
+        ERROR("failed to allocate memory!");
     *output            = data_planes;
 
     for (i = 0; i < afifo->nb_buffers; ++i){
-        data_planes[i] = allocate_memory(afifo->sample_size * tot_elements);
+        data_planes[i] = av_malloc_array(tot_elements, afifo->sample_size);
+        if (!data_planes[i])
+            ERROR("failed to allocate memory!");
     }
 
     return av_audio_fifo_read(afifo, *output, nb_samples);
@@ -178,9 +174,9 @@ static void test_function(const TestStruct test_sample)
 
     /* deallocate */
     for (i = 0; i < afifo->nb_buffers; ++i){
-        free(output_data[i]);
+        av_freep(&output_data[i]);
     }
-    free(output_data);
+    av_freep(&output_data);
     av_audio_fifo_free(afifo);
 }
 
-- 
2.10.2

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to