aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2024-09-26 18:08:04 +0200
committerAnton Khirnov <anton@khirnov.net>2024-09-28 17:04:33 +0200
commit505fea34e53e0459d1ca6604a3f4737f0b90902c (patch)
treeadf285d5df3fb17ed7864db517f9480fc3d77e3e
parent9b764e9b491747aa85c47ecd210551ab001ca977 (diff)
downloadffmpeg-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.c6
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 "