avfilter/af_compand: do not leak frames on error
authorPaul B Mahol <onemda@gmail.com>
Sat, 15 Feb 2014 11:38:32 +0000 (11:38 +0000)
committerPaul B Mahol <onemda@gmail.com>
Sat, 15 Feb 2014 11:38:32 +0000 (11:38 +0000)
Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavfilter/af_compand.c

index ec1e962..a2f2bb7 100644 (file)
@@ -184,8 +184,10 @@ static int compand_nodelay(AVFilterContext *ctx, AVFrame *frame)
         out_frame = frame;
     } else {
         out_frame = ff_get_audio_buffer(inlink, nb_samples);
-        if (!out_frame)
+        if (!out_frame) {
+            av_frame_free(&frame);
             return AVERROR(ENOMEM);
+        }
         av_frame_copy_props(out_frame, frame);
     }
 
@@ -235,8 +237,10 @@ static int compand_delay(AVFilterContext *ctx, AVFrame *frame)
             if (count >= s->delay_samples) {
                 if (!out_frame) {
                     out_frame = ff_get_audio_buffer(inlink, nb_samples - i);
-                    if (!out_frame)
+                    if (!out_frame) {
+                        av_frame_free(&frame);
                         return AVERROR(ENOMEM);
+                    }
                     av_frame_copy_props(out_frame, frame);
                     out_frame->pts = s->pts;
                     s->pts += av_rescale_q(nb_samples - i, (AVRational){1, inlink->sample_rate}, inlink->time_base);