From 5c3383e5b5c7e3e3c1ba86a58d3e0a1ebf521aa7 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Wed, 17 Dec 2008 23:21:33 +0000 Subject: Fix opt_default(), making it exit immediately in case of an invalid argument. See the thread: "[PATCH] Fix opt_default()". Originally committed as revision 16196 to svn://svn.ffmpeg.org/ffmpeg/trunk --- cmdutils.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'cmdutils.c') diff --git a/cmdutils.c b/cmdutils.c index f52f56e7e2..9639fef8e4 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -176,25 +176,30 @@ unknown_opt: int opt_default(const char *opt, const char *arg){ int type; + int ret= 0; const AVOption *o= NULL; int opt_types[]={AV_OPT_FLAG_VIDEO_PARAM, AV_OPT_FLAG_AUDIO_PARAM, 0, AV_OPT_FLAG_SUBTITLE_PARAM, 0}; - for(type=0; type= 0; type++){ const AVOption *o2 = av_find_opt(avctx_opts[0], opt, NULL, opt_types[type], opt_types[type]); if(o2) - o = av_set_string2(avctx_opts[type], opt, arg, 1); + ret = av_set_string3(avctx_opts[type], opt, arg, 1, &o); } if(!o) - o = av_set_string2(avformat_opts, opt, arg, 1); + ret = av_set_string3(avformat_opts, opt, arg, 1, &o); if(!o) - o = av_set_string2(sws_opts, opt, arg, 1); + ret = av_set_string3(sws_opts, opt, arg, 1, &o); if(!o){ if(opt[0] == 'a') - o = av_set_string2(avctx_opts[CODEC_TYPE_AUDIO], opt+1, arg, 1); + ret = av_set_string3(avctx_opts[CODEC_TYPE_AUDIO], opt+1, arg, 1, &o); else if(opt[0] == 'v') - o = av_set_string2(avctx_opts[CODEC_TYPE_VIDEO], opt+1, arg, 1); + ret = av_set_string3(avctx_opts[CODEC_TYPE_VIDEO], opt+1, arg, 1, &o); else if(opt[0] == 's') - o = av_set_string2(avctx_opts[CODEC_TYPE_SUBTITLE], opt+1, arg, 1); + ret = av_set_string3(avctx_opts[CODEC_TYPE_SUBTITLE], opt+1, arg, 1, &o); + } + if (o && ret < 0) { + fprintf(stderr, "Invalid value '%s' for option '%s'\n", arg, opt); + exit(1); } if(!o) return -1; -- cgit v1.2.3