Anoter try to make +- behave sanely.

Originally committed as revision 13281 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2008-05-24 12:58:20 +00:00
parent ebea1d7668
commit 9d2e6e84ce

View File

@ -146,6 +146,7 @@ const AVOption *av_set_string(void *obj, const char *name, const char *val){
return o;
}
if(o->type != FF_OPT_TYPE_STRING){
int notfirst=0;
for(;;){
int i;
char buf[256];
@ -180,8 +181,8 @@ const AVOption *av_set_string(void *obj, const char *name, const char *val){
if (cmd=='+') d= av_get_int(obj, name, NULL) | (int64_t)d;
else if(cmd=='-') d= av_get_int(obj, name, NULL) &~(int64_t)d;
}else{
if (cmd=='+') d= av_get_double(obj, name, NULL) + d;
else if(cmd=='-') d= av_get_double(obj, name, NULL) - d;
if (cmd=='+') d= notfirst*av_get_double(obj, name, NULL) + d;
else if(cmd=='-') d= notfirst*av_get_double(obj, name, NULL) - d;
}
if (!av_set_number(obj, name, d, 1, 1))
@ -189,6 +190,7 @@ const AVOption *av_set_string(void *obj, const char *name, const char *val){
val+= i;
if(!*val)
return o;
notfirst=1;
}
return NULL;
}