From ebc8d974817fe456a0afe6867fdeb22c761fb04f Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 8 Jul 2012 17:29:42 +0200 Subject: lavfi: add error handling to start_frame(). --- libavfilter/vf_drawtext.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'libavfilter/vf_drawtext.c') diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c index 84aaa5f7aa..f9a92615c9 100644 --- a/libavfilter/vf_drawtext.c +++ b/libavfilter/vf_drawtext.c @@ -808,16 +808,16 @@ static inline int normalize_double(int *n, double d) return ret; } -static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) +static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) { AVFilterContext *ctx = inlink->dst; DrawTextContext *dtext = ctx->priv; AVFilterBufferRef *buf_out; - int fail = 0; + int ret = 0; - if (dtext_prepare_text(ctx) < 0) { + if ((ret = dtext_prepare_text(ctx)) < 0) { av_log(ctx, AV_LOG_ERROR, "Can't draw text\n"); - fail = 1; + return ret; } dtext->var_values[VAR_T] = inpicref->pts == AV_NOPTS_VALUE ? @@ -829,8 +829,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) dtext->var_values[VAR_X] = av_expr_eval(dtext->x_pexpr, dtext->var_values, &dtext->prng); - dtext->draw = fail ? 0 : - av_expr_eval(dtext->d_pexpr, dtext->var_values, &dtext->prng); + dtext->draw = av_expr_eval(dtext->d_pexpr, dtext->var_values, &dtext->prng); normalize_double(&dtext->x, dtext->var_values[VAR_X]); normalize_double(&dtext->y, dtext->var_values[VAR_Y]); @@ -852,7 +851,10 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) dtext->x, dtext->y, dtext->x+dtext->w, dtext->y+dtext->h); buf_out = avfilter_ref_buffer(inpicref, ~0); - ff_start_frame(inlink->dst->outputs[0], buf_out); + if (!buf_out) + return AVERROR(ENOMEM); + + return ff_start_frame(inlink->dst->outputs[0], buf_out); } static void end_frame(AVFilterLink *inlink) -- cgit v1.2.3