[FFmpeg-cvslog] timefilter: Handle memory allocation failure

Derek Buitenhuis git at videolan.org
Tue Oct 29 20:06:37 CET 2013


ffmpeg | branch: master | Derek Buitenhuis <derek.buitenhuis at gmail.com> | Tue Oct 22 18:46:37 2013 +0100| [327c439f811a89d774db9a86f72951d295193e5f] | committer: Derek Buitenhuis

timefilter: Handle memory allocation failure

Signed-off-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>

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

 libavdevice/jack_audio.c |    4 ++++
 libavdevice/timefilter.c |   10 +++++++++-
 libavdevice/timefilter.h |    2 ++
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/libavdevice/jack_audio.c b/libavdevice/jack_audio.c
index 280f24d..c261514 100644
--- a/libavdevice/jack_audio.c
+++ b/libavdevice/jack_audio.c
@@ -190,6 +190,10 @@ static int start_jack(AVFormatContext *context)
     period            = (double) self->buffer_size / self->sample_rate;
     o                 = 2 * M_PI * 1.5 * period; /// bandwidth: 1.5Hz
     self->timefilter  = ff_timefilter_new (1.0 / self->sample_rate, sqrt(2 * o), o * o);
+    if (!self->timefilter) {
+        jack_client_close(self->client);
+        return AVERROR(ENOMEM);
+    }
 
     /* Create FIFO buffers */
     self->filled_pkts = av_fifo_alloc(FIFO_PACKETS_NUM * sizeof(AVPacket));
diff --git a/libavdevice/timefilter.c b/libavdevice/timefilter.c
index 8b98d33..a497351 100644
--- a/libavdevice/timefilter.c
+++ b/libavdevice/timefilter.c
@@ -41,7 +41,11 @@ TimeFilter *ff_timefilter_new(double clock_period,
                               double feedback2_factor,
                               double feedback3_factor)
 {
-    TimeFilter *self       = av_mallocz(sizeof(TimeFilter));
+    TimeFilter *self = av_mallocz(sizeof(TimeFilter));
+
+    if (!self)
+        return NULL;
+
     self->clock_period     = clock_period;
     self->feedback2_factor = feedback2_factor;
     self->feedback3_factor = feedback3_factor;
@@ -105,6 +109,10 @@ int main(void)
                     for (par1 = bestpar1 * 0.8; par1 <= bestpar1 * 1.21; par1 += bestpar1 * 0.05) {
                         double error   = 0;
                         TimeFilter *tf = ff_timefilter_new(1, par0, par1);
+                        if (!tf) {
+                            printf("Could not allocate memory for timefilter.\n");
+                            exit(1);
+                        }
                         for (i = 0; i < SAMPLES; i++) {
                             double filtered;
                             filtered = ff_timefilter_update(tf, samples[i], 1);
diff --git a/libavdevice/timefilter.h b/libavdevice/timefilter.h
index 8cadd8b..2235db6 100644
--- a/libavdevice/timefilter.h
+++ b/libavdevice/timefilter.h
@@ -56,6 +56,8 @@ typedef struct TimeFilter TimeFilter;
  * @param clock_period period of the hardware clock in seconds
  *        (for example 1.0/44100)
  *
+ * @return a pointer to a TimeFilter struct, or NULL on error
+ *
  * For more details about these parameters and background concepts please see:
  * http://www.kokkinizita.net/papers/usingdll.pdf
  */



More information about the ffmpeg-cvslog mailing list