summaryrefslogtreecommitdiff
path: root/glib/src/optiongroup.ccg
diff options
context:
space:
mode:
authorKjell Ahlstedt <kjellahlstedt@gmail.com>2018-07-17 17:13:14 +0200
committerKjell Ahlstedt <kjellahlstedt@gmail.com>2018-07-17 17:13:14 +0200
commitc8591470d475f90e000cce7c5eb9fd0ab126a066 (patch)
tree931b90cd810cc0f5e577f26ff993c5a9222be7ea /glib/src/optiongroup.ccg
parent9e457844f544793ab2b727351fca0805ddc0c20a (diff)
downloadglibmm-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.ccg7
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.