lavu/opt: avoid accidentally propagating spurious errors

An error from read_number() is non-fatal here and should not be
forwarded.
pull/153/merge
Anton Khirnov 2 months ago
parent 9b764e9b49
commit 505fea34e5
  1. 6
      libavutil/opt.c

@ -2343,13 +2343,15 @@ int av_opt_set_array(void *obj, const char *name, int search_flags,
int64_t intnum = 1;
if (val_type == TYPE_BASE(o->type)) {
int err;
ret = opt_copy_elem(obj, val_type, dst, src);
if (ret < 0)
goto fail;
// validate the range for numeric options
ret = read_number(o, dst, &num, &den, &intnum);
if (ret >= 0 && TYPE_BASE(o->type) != AV_OPT_TYPE_FLAGS &&
err = read_number(o, dst, &num, &den, &intnum);
if (err >= 0 && TYPE_BASE(o->type) != AV_OPT_TYPE_FLAGS &&
(!den || o->max * den < num * intnum || o->min * den > num * intnum)) {
num = den ? num * intnum / den : (num && intnum ? INFINITY : NAN);
av_log(obj, AV_LOG_ERROR, "Cannot set array element %u for "

Loading…
Cancel
Save