diff options
author | Kacper Michajłow <kasper93@gmail.com> | 2024-02-26 04:55:00 +0100 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2024-02-28 16:04:02 +0000 |
commit | 0897604298120c3f197fa151ff85c9b5213c26f6 (patch) | |
tree | 2c38308dce99430528ddf1c0746441ac8cdb7c42 /video/out/gpu/lcms.c | |
parent | d955dfab294ecd24064f2d64b8af0bafc2af575c (diff) | |
download | mpv-0897604298120c3f197fa151ff85c9b5213c26f6.tar.bz2 mpv-0897604298120c3f197fa151ff85c9b5213c26f6.tar.xz |
various: avoid function pointer casts
The opt validator functions are casted to generic validator, which has
erased type for value. Calling function by pointer of different
definition is an UB.
Avoid that by generating wrapper function that does proper argument type
conversion and calls validator function. Type erased functions have
mangled type in the name.
Fixes UBSAN failures on Clang 17, which enabled fsanitize=function by
default.
Diffstat (limited to 'video/out/gpu/lcms.c')
-rw-r--r-- | video/out/gpu/lcms.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/video/out/gpu/lcms.c b/video/out/gpu/lcms.c index 1e451aa7a2..e8fe1d48c3 100644 --- a/video/out/gpu/lcms.c +++ b/video/out/gpu/lcms.c @@ -494,8 +494,7 @@ bool gl_lcms_get_lut3d(struct gl_lcms *p, struct lut3d **result_lut3d, #endif -static int validate_3dlut_size_opt(struct mp_log *log, const m_option_t *opt, - struct bstr name, const char **value) +static inline OPT_STRING_VALIDATE_FUNC(validate_3dlut_size_opt) { int p1, p2, p3; return gl_parse_3dlut_size(*value, &p1, &p2, &p3) ? 0 : M_OPT_INVALID; |