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; }