Mercurial > libavcodec.hg
comparison opt.c @ 11801:026edf66e3a9 libavcodec
Make ff_parse_expr() and ff_parse_and_eval_expr() return an int
containing an error code.
Allow these functions to convey the reason of the failure to the
calling function, failure which is not always due to a parsing error
but it may depend for example on a memory problem.
Also fix several potential memleaks.
author | stefano |
---|---|
date | Tue, 01 Jun 2010 08:07:07 +0000 |
parents | c6368258b694 |
children | e522dbf60abd |
comparison
equal
deleted
inserted
replaced
11800:966aa6b53dcf | 11801:026edf66e3a9 |
---|---|
163 else if(!strcmp(buf, "max" )) d= o->max; | 163 else if(!strcmp(buf, "max" )) d= o->max; |
164 else if(!strcmp(buf, "min" )) d= o->min; | 164 else if(!strcmp(buf, "min" )) d= o->min; |
165 else if(!strcmp(buf, "none" )) d= 0; | 165 else if(!strcmp(buf, "none" )) d= 0; |
166 else if(!strcmp(buf, "all" )) d= ~0; | 166 else if(!strcmp(buf, "all" )) d= ~0; |
167 else { | 167 else { |
168 d = ff_parse_and_eval_expr(buf, const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, obj); | 168 int res = ff_parse_and_eval_expr(&d, buf, const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, obj); |
169 if (isnan(d)){ | 169 if (res < 0) { |
170 av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\"\n", val); | 170 av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\"\n", val); |
171 return AVERROR(EINVAL); | 171 return res; |
172 } | 172 } |
173 } | 173 } |
174 } | 174 } |
175 if(o->type == FF_OPT_TYPE_FLAGS){ | 175 if(o->type == FF_OPT_TYPE_FLAGS){ |
176 if (cmd=='+') d= av_get_int(obj, name, NULL) | (int64_t)d; | 176 if (cmd=='+') d= av_get_int(obj, name, NULL) | (int64_t)d; |