diff options
author | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2018-07-17 17:13:14 +0200 |
---|---|---|
committer | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2018-07-17 17:13:14 +0200 |
commit | c8591470d475f90e000cce7c5eb9fd0ab126a066 (patch) | |
tree | 931b90cd810cc0f5e577f26ff993c5a9222be7ea /glib/src/optiongroup.ccg | |
parent | 9e457844f544793ab2b727351fca0805ddc0c20a (diff) | |
download | glibmm-c8591470d475f90e000cce7c5eb9fd0ab126a066.tar.gz |
Avoid compiler warnings from function pointer conversions
gcc8 -Wextra prints a warning when reinterpret_cast is used for conversion
between different types of function pointers. Avoid that by adding
Glib::bitwise_equivalent_cast<>() with a union with members of
the two types of function pointers.
* glib/src/optiongroup.ccg: Use Glib::bitwise_equivalent_cast<>() to convert
from a function pointer to void*.
See https://github.com/libsigcplusplus/libsigcplusplus/issues/1
Diffstat (limited to 'glib/src/optiongroup.ccg')
-rw-r--r-- | glib/src/optiongroup.ccg | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/glib/src/optiongroup.ccg b/glib/src/optiongroup.ccg index 95177ce4..483e8354 100644 --- a/glib/src/optiongroup.ccg +++ b/glib/src/optiongroup.ccg @@ -571,12 +571,7 @@ OptionGroup::CppOptionEntry::allocate_c_arg() case G_OPTION_ARG_CALLBACK: { // The C arg pointer is a function pointer, cast to void*. - union { - void* dp; - GOptionArgFunc fp; - } u; - u.fp = &OptionGroup::option_arg_callback; - carg_ = u.dp; + carg_ = Glib::bitwise_equivalent_cast<void*>(&OptionGroup::option_arg_callback); // With all compiler warnings turned on and a high optimization level // it's difficult to cast a function pointer to a void*. See bug 589197. |