diff options
author | Anton Khirnov <anton@khirnov.net> | 2024-09-26 18:08:04 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2024-09-28 17:04:33 +0200 |
commit | 505fea34e53e0459d1ca6604a3f4737f0b90902c (patch) | |
tree | adf285d5df3fb17ed7864db517f9480fc3d77e3e | |
parent | 9b764e9b491747aa85c47ecd210551ab001ca977 (diff) | |
download | ffmpeg-505fea34e53e0459d1ca6604a3f4737f0b90902c.tar.gz |
lavu/opt: avoid accidentally propagating spurious errors
An error from read_number() is non-fatal here and should not be
forwarded.
-rw-r--r-- | libavutil/opt.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libavutil/opt.c b/libavutil/opt.c index 02ed9d9fe9..93f2bb1320 100644 --- a/libavutil/opt.c +++ b/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 " |