Commit 142894d7 authored by Paul B Mahol's avatar Paul B Mahol

avfilter: do not leak frame if ff_get_audio_buffer() fails

Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent fd3df296
...@@ -192,8 +192,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) ...@@ -192,8 +192,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
return ff_filter_frame(ctx->outputs[0], frame); return ff_filter_frame(ctx->outputs[0], frame);
out_frame = ff_get_audio_buffer(inlink, frame->nb_samples); out_frame = ff_get_audio_buffer(inlink, frame->nb_samples);
if (!out_frame) if (!out_frame) {
av_frame_free(&frame);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
}
av_frame_copy_props(out_frame, frame); av_frame_copy_props(out_frame, frame);
for (i = 0; i < s->nb_delays; i++) { for (i = 0; i < s->nb_delays; i++) {
......
...@@ -279,8 +279,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) ...@@ -279,8 +279,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
out_frame = frame; out_frame = frame;
} else { } else {
out_frame = ff_get_audio_buffer(inlink, frame->nb_samples); out_frame = ff_get_audio_buffer(inlink, frame->nb_samples);
if (!out_frame) if (!out_frame) {
av_frame_free(&frame);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
}
av_frame_copy_props(out_frame, frame); av_frame_copy_props(out_frame, frame);
} }
......
...@@ -401,8 +401,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) ...@@ -401,8 +401,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
out_buf = buf; out_buf = buf;
} else { } else {
out_buf = ff_get_audio_buffer(inlink, nb_samples); out_buf = ff_get_audio_buffer(inlink, nb_samples);
if (!out_buf) if (!out_buf) {
av_frame_free(&buf);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
}
av_frame_copy_props(out_buf, buf); av_frame_copy_props(out_buf, buf);
} }
......
...@@ -247,8 +247,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) ...@@ -247,8 +247,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
out_frame = frame; out_frame = frame;
} else { } else {
out_frame = ff_get_audio_buffer(inlink, frame->nb_samples); out_frame = ff_get_audio_buffer(inlink, frame->nb_samples);
if (!out_frame) if (!out_frame) {
av_frame_free(&frame);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
}
av_frame_copy_props(out_frame, frame); av_frame_copy_props(out_frame, frame);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment