gnome-control-center/panels/privacy/bolt
Philip Withnall ea014f24eb general: Fix various strict-aliasing warnings with g_clear_pointer()
This is just unfortunate. It’s an aliasing violation to cast a pointer
to a pointer (and there’s no way round that), although in practice it
will not cause a problem. People do quite often compile with
`-Werror=strict-aliasing`, though, so fixing the warnings is helpful.

Warnings are of the form:
```
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c: In function ‘cc_keyboard_shortcut_dialog_finalize’:
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c:518:20: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  518 |   g_clear_pointer ((GtkWindow**)&self->shortcut_editor, gtk_window_destroy);
/opt/gnome/install/include/glib-2.0/glib/gmacros.h:871:47: note: in definition of macro ‘G_STATIC_ASSERT’
  871 | #define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
      |                                               ^~~~
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c:518:3: note: in expansion of macro ‘g_clear_pointer’
  518 |   g_clear_pointer ((GtkWindow**)&self->shortcut_editor, gtk_window_destroy);
      |   ^~~~~~~~~~~~~~~
In file included from /opt/gnome/install/include/glib-2.0/glib/gatomic.h:30,
                 from /opt/gnome/install/include/glib-2.0/glib/gthread.h:34,
                 from /opt/gnome/install/include/glib-2.0/glib/gasyncqueue.h:34,
                 from /opt/gnome/install/include/glib-2.0/glib.h:34:
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c:518:20: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  518 |   g_clear_pointer ((GtkWindow**)&self->shortcut_editor, gtk_window_destroy);
/opt/gnome/install/include/glib-2.0/glib/glib-typeof.h:39:36: note: in definition of macro ‘glib_typeof’
   39 | #define glib_typeof(t) __typeof__ (t)
      |                                    ^
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c:518:3: note: in expansion of macro ‘g_clear_pointer’
  518 |   g_clear_pointer ((GtkWindow**)&self->shortcut_editor, gtk_window_destroy);
      |   ^~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
```

I believe it’s better to fix these by expanding out the
`g_clear_pointer()` call, than by changing the types of variables — the
latter approach means everything becomes a `GtkWidget` or a `GtkWindow`,
which loses type specificity. So this approach is in contrast to that
taken in commit 1bafd46ea3, for example.

Alternative approaches would be:
 1. Add internal `cc_clear_window()` and `cc_clear_widget()` helpers
    which do this in a single line without aliasing violations.
 2. Enforce compiling with `-Wno-strict-aliasing` if strict aliasing is
    not something that g-c-c maintainers want to care about (which would
    be fine, aliasing checks probably won’t catch any bugs in this kind
    of code).

Signed-off-by: Philip Withnall <pwithnall@gnome.org>

Fixes: #2563
2024-05-16 14:01:02 +00:00
..
bolt-client.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-client.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-device.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-device.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-enums.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-enums.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-error.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-error.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-names.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-names.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-proxy.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-proxy.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-str.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-str.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-time.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
bolt-time.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
cc-bolt-device-dialog.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
cc-bolt-device-dialog.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
cc-bolt-device-dialog.ui privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
cc-bolt-device-entry.c privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
cc-bolt-device-entry.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
cc-bolt-device-entry.ui privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
cc-bolt-page.c general: Fix various strict-aliasing warnings with g_clear_pointer() 2024-05-16 14:01:02 +00:00
cc-bolt-page.h privacy: Separate subpages files in their respective folders 2024-03-25 14:43:32 +01:00
cc-bolt-page.ui privacy, bolt: Port main row to AdwSwitchRow 2024-05-14 08:45:11 +00:00