diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2022-09-26 16:05:31 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2022-09-26 16:05:40 +0200 |
commit | f8b0b17634362730d1cc8eddf5b41e73d75e4f82 (patch) | |
tree | fbff7c05e89e1bd59a75a01492732f5ddbd0d7a7 /core | |
parent | b9a64c77366361a0d45dcdd2b330911efd1eb3f4 (diff) |
MethodBind: Silence GCC `-Wmaybe-uninitialized` caused by UBSAN
A priori this doesn't appear to be an actual bug, but a known consequence of
using UBSAN. We silence this one to still have the possibility to get more
warnings raised by UBSAN, in case they are useful.
Works around and closes #66343.
Diffstat (limited to 'core')
-rw-r--r-- | core/object/method_bind.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/core/object/method_bind.h b/core/object/method_bind.h index d60550c899..0d3e40f709 100644 --- a/core/object/method_bind.h +++ b/core/object/method_bind.h @@ -241,9 +241,17 @@ class MethodBindVarArgTR : public MethodBindVarArgBase<MethodBindVarArgTR<T, R>, friend class MethodBindVarArgBase<MethodBindVarArgTR<T, R>, T, R, true>; public: +#if defined(SANITIZERS_ENABLED) && defined(__GNUC__) && !defined(__clang__) + // Workaround GH-66343 raised only with UBSAN, seems to be a false positive. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif virtual Variant call(Object *p_object, const Variant **p_args, int p_arg_count, Callable::CallError &r_error) override { return (static_cast<T *>(p_object)->*MethodBindVarArgBase<MethodBindVarArgTR<T, R>, T, R, true>::method)(p_args, p_arg_count, r_error); } +#if defined(SANITIZERS_ENABLED) && defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif MethodBindVarArgTR( R (T::*p_method)(const Variant **, int, Callable::CallError &), |