fftools/ffmpeg_opt: Fix leak on error
Fixes Coverity id #1539096. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
0368ded1a9
commit
8bb1bcf47d
@ -401,13 +401,14 @@ static int opt_map(void *optctx, const char *opt, const char *arg)
|
|||||||
|
|
||||||
ret = GROW_ARRAY(o->stream_maps, o->nb_stream_maps);
|
ret = GROW_ARRAY(o->stream_maps, o->nb_stream_maps);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
goto fail;
|
||||||
|
|
||||||
m = &o->stream_maps[o->nb_stream_maps - 1];
|
m = &o->stream_maps[o->nb_stream_maps - 1];
|
||||||
m->linklabel = av_get_token(&c, "]");
|
m->linklabel = av_get_token(&c, "]");
|
||||||
if (!m->linklabel) {
|
if (!m->linklabel) {
|
||||||
av_log(NULL, AV_LOG_ERROR, "Invalid output link label: %s.\n", map);
|
av_log(NULL, AV_LOG_ERROR, "Invalid output link label: %s.\n", map);
|
||||||
return AVERROR(EINVAL);
|
ret = AVERROR(EINVAL);
|
||||||
|
goto fail;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (allow_unused = strchr(map, '?'))
|
if (allow_unused = strchr(map, '?'))
|
||||||
@ -415,7 +416,8 @@ static int opt_map(void *optctx, const char *opt, const char *arg)
|
|||||||
file_idx = strtol(map, &p, 0);
|
file_idx = strtol(map, &p, 0);
|
||||||
if (file_idx >= nb_input_files || file_idx < 0) {
|
if (file_idx >= nb_input_files || file_idx < 0) {
|
||||||
av_log(NULL, AV_LOG_FATAL, "Invalid input file index: %d.\n", file_idx);
|
av_log(NULL, AV_LOG_FATAL, "Invalid input file index: %d.\n", file_idx);
|
||||||
return AVERROR(EINVAL);
|
ret = AVERROR(EINVAL);
|
||||||
|
goto fail;
|
||||||
}
|
}
|
||||||
if (negative)
|
if (negative)
|
||||||
/* disable some already defined maps */
|
/* disable some already defined maps */
|
||||||
@ -438,7 +440,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg)
|
|||||||
}
|
}
|
||||||
ret = GROW_ARRAY(o->stream_maps, o->nb_stream_maps);
|
ret = GROW_ARRAY(o->stream_maps, o->nb_stream_maps);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
goto fail;
|
||||||
|
|
||||||
m = &o->stream_maps[o->nb_stream_maps - 1];
|
m = &o->stream_maps[o->nb_stream_maps - 1];
|
||||||
|
|
||||||
@ -453,16 +455,19 @@ static int opt_map(void *optctx, const char *opt, const char *arg)
|
|||||||
} else if (disabled) {
|
} else if (disabled) {
|
||||||
av_log(NULL, AV_LOG_FATAL, "Stream map '%s' matches disabled streams.\n"
|
av_log(NULL, AV_LOG_FATAL, "Stream map '%s' matches disabled streams.\n"
|
||||||
"To ignore this, add a trailing '?' to the map.\n", arg);
|
"To ignore this, add a trailing '?' to the map.\n", arg);
|
||||||
return AVERROR(EINVAL);
|
ret = AVERROR(EINVAL);
|
||||||
|
goto fail;
|
||||||
} else {
|
} else {
|
||||||
av_log(NULL, AV_LOG_FATAL, "Stream map '%s' matches no streams.\n"
|
av_log(NULL, AV_LOG_FATAL, "Stream map '%s' matches no streams.\n"
|
||||||
"To ignore this, add a trailing '?' to the map.\n", arg);
|
"To ignore this, add a trailing '?' to the map.\n", arg);
|
||||||
return AVERROR(EINVAL);
|
ret = AVERROR(EINVAL);
|
||||||
|
goto fail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ret = 0;
|
||||||
|
fail:
|
||||||
av_freep(&map);
|
av_freep(&map);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int opt_attach(void *optctx, const char *opt, const char *arg)
|
static int opt_attach(void *optctx, const char *opt, const char *arg)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user