From c24f76b948f3af894b52c8fe8ac041a1c974a372 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Sun, 7 Nov 2010 18:40:14 +0000 Subject: Make avfilter_graph_parse() always return meaningful error codes. Originally committed as revision 25699 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavfilter/graphparser.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'libavfilter/graphparser.c') diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c index 2929776a60..6256ddfd45 100644 --- a/libavfilter/graphparser.c +++ b/libavfilter/graphparser.c @@ -316,7 +316,7 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, AVFilterInOut *open_inputs, AVFilterInOut *open_outputs, AVClass *log_ctx) { - int index = 0; + int index = 0, ret; char chr = 0; AVFilterInOut *curr_inputs = NULL; @@ -325,24 +325,24 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, AVFilterContext *filter; filters += strspn(filters, WHITESPACES); - if (parse_inputs(&filters, &curr_inputs, &open_outputs, log_ctx) < 0) + if ((ret = parse_inputs(&filters, &curr_inputs, &open_outputs, log_ctx)) < 0) goto fail; - if (parse_filter(&filter, &filters, graph, index, log_ctx) < 0) + if ((ret = parse_filter(&filter, &filters, graph, index, log_ctx)) < 0) goto fail; if (filter->input_count == 1 && !curr_inputs && !index) { /* First input can be omitted if it is "[in]" */ const char *tmp = "[in]"; - if(parse_inputs(&tmp, &curr_inputs, &open_outputs, log_ctx) < 0) + if ((ret = parse_inputs(&tmp, &curr_inputs, &open_outputs, log_ctx)) < 0) goto fail; } - if (link_filter_inouts(filter, &curr_inputs, &open_inputs, log_ctx) < 0) + if ((ret = link_filter_inouts(filter, &curr_inputs, &open_inputs, log_ctx)) < 0) goto fail; - if (parse_outputs(&filters, &curr_inputs, &open_inputs, &open_outputs, - log_ctx) < 0) + if ((ret = parse_outputs(&filters, &curr_inputs, &open_inputs, &open_outputs, + log_ctx)) < 0) goto fail; filters += strspn(filters, WHITESPACES); @@ -352,6 +352,7 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, av_log(log_ctx, AV_LOG_ERROR, "Could not find a output to link when parsing \"%s\"\n", filters - 1); + ret = AVERROR(EINVAL); goto fail; } index++; @@ -361,14 +362,15 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, av_log(log_ctx, AV_LOG_ERROR, "Unable to parse graph description substring: \"%s\"\n", filters - 1); + ret = AVERROR(EINVAL); goto fail; } if (open_inputs && !strcmp(open_inputs->name, "out") && curr_inputs) { /* Last output can be omitted if it is "[out]" */ const char *tmp = "[out]"; - if (parse_outputs(&tmp, &curr_inputs, &open_inputs, - &open_outputs, log_ctx) < 0) + if ((ret = parse_outputs(&tmp, &curr_inputs, &open_inputs, &open_outputs, + log_ctx)) < 0) goto fail; } @@ -379,5 +381,5 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, free_inout(open_inputs); free_inout(open_outputs); free_inout(curr_inputs); - return -1; + return ret; } -- cgit v1.2.3