diff options
author | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2010-11-07 18:40:14 +0000 |
---|---|---|
committer | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2010-11-07 18:40:14 +0000 |
commit | c24f76b948f3af894b52c8fe8ac041a1c974a372 (patch) | |
tree | 9aa9c31dcd2a2a502f311cf692f431c5d42534a3 | |
parent | 0cc8b65950dca4a2d80b827a4e8b7a5effe28a55 (diff) | |
download | ffmpeg-c24f76b948f3af894b52c8fe8ac041a1c974a372.tar.gz |
Make avfilter_graph_parse() always return meaningful error codes.
Originally committed as revision 25699 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavfilter/graphparser.c | 22 |
1 files changed, 12 insertions, 10 deletions
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; } |