glib/gobject
Philip Withnall 51acb01f73 gobject: Fix strict aliasing warnings with g_set_object()
When calling `g_set_object()` for a type derived from `GObject`, GCC 9.2
was giving the following strict aliasing warning:
```
../../source/malcontent/libmalcontent-ui/user-controls.c:1001:21: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
 1001 |   if (g_set_object (&self->user, user))
/opt/gnome/install/include/glib-2.0/gobject/gobject.h:744:33: note: in definition of macro ‘g_set_object’
  744 |   (g_set_object) ((GObject **) (object_ptr), (GObject *) (new_object)) \
      |                                 ^~~~~~~~~~
```

This was due to the `(GObject **)` cast.

Pass the pointer through a union to squash this warning. We already do
some size and type checks of the dereferenced type, which should catch
casual errors. The `g_object_ref()` and `g_object_unref()` calls which
subsequently happen inside the `g_set_object()` function also do some
dynamic type checks.

Add a test.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-18 12:15:52 +00:00
..
tests gobject: Fix strict aliasing warnings with g_set_object() 2020-02-18 12:15:52 +00:00
gatomicarray.c minor typos in the documentation (a/an) 2019-08-24 19:14:05 +00:00
gatomicarray.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gbinding.c gbinding: Avoid a string copy of interned property names 2019-11-15 11:06:14 +00:00
gbinding.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gboxed.c gboxed: Fix two potential NULL pointer dereferences 2019-09-05 14:17:11 +01:00
gboxed.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gclosure.c Revert last 4 commits 2019-11-26 00:54:15 +01:00
gclosure.h gclosure: Expand documentation and fix some typos 2018-04-26 18:04:47 +01:00
genums.c gobject: Fix various compiler warnings when compiling with G_DISABLE_ASSERT 2019-03-08 19:46:21 +00:00
genums.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
glib-enumtypes.c.template build: Rename gobjectenumtypes.[ch] to glib-enumtypes.[ch] 2019-03-04 11:12:59 +00:00
glib-enumtypes.h.template build: Rename gobjectenumtypes.[ch] to glib-enumtypes.[ch] 2019-03-04 11:12:59 +00:00
glib-genmarshal.in glib-genmarshal: Avoid a param ref for static param valist arguments 2019-06-18 11:59:11 +01:00
glib-mkenums.in glib-mkenums: Support reading @rspfiles for arguments 2018-12-04 16:16:00 +05:30
glib-types.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gmarshal.c minor typos in the documentation (a/an) 2019-08-24 19:14:05 +00:00
gmarshal.h gmarshal: Move marshaller documentation comments to above functions 2019-03-04 12:33:17 +00:00
gobject_gdb.py python: avoid equality check for None 2018-07-12 23:48:41 +02:00
gobject_probes.d Add missing semicolons to gobject_probes.d 2012-10-15 19:48:44 -04:00
gobject_trace.h build: Disable dtrace probes under static analysis 2019-09-05 14:16:58 +01:00
gobject-autocleanups.h gobject: Add g_autoptr() support for GTypeClass, GEnumClass, GFlagsClass 2018-05-15 15:38:33 +01:00
gobject-query.c Spelling: fix spelling of specify 2018-09-25 14:34:48 +01:00
gobject.c docs: Clarify handling of 64-bit integer literals with g_object_new() 2019-12-17 12:23:19 +00:00
gobject.h gobject: Fix strict aliasing warnings with g_set_object() 2020-02-18 12:15:52 +00:00
gobject.rc.in meson: build Windows resource files 2018-01-04 22:19:30 +01:00
gobject.stp.in glib: Namespace global tapset variables by soname 2016-11-23 10:50:39 +00:00
gobjectnotifyqueue.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gparam.c gparam: Tighten up property name validation 2019-11-15 11:06:14 +00:00
gparam.h Constify g_param_value_defaults() argument 2019-10-26 14:03:16 +01:00
gparamspecs.c Merge branch 'param-value-default' into 'master' 2019-10-31 10:22:57 +00:00
gparamspecs.h Annotate various types and macros as deprecated 2019-05-30 10:39:11 +01:00
gsignal.c gsignal: Drop unnecessary warnings from g_signal_lookup() 2019-12-12 13:00:54 +00:00
gsignal.h gsignal: Fix typos in GSignalMatchType documentation 2019-11-15 11:06:14 +00:00
gsourceclosure.c all: Remove trailing newlines from g_message()/g_warning()/g_error()s 2018-04-27 16:46:19 +01:00
gsourceclosure.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gtype-private.h Use the GObject hole on 64bit arches for some flags to improve performance 2019-09-02 15:48:32 +02:00
gtype.c Revert last 4 commits 2019-11-26 00:54:15 +01:00
gtype.h gtype: Define auto-cleanup functions for Module class 2019-12-13 20:07:51 +01:00
gtypemodule.c all: Remove trailing newlines from g_message()/g_warning()/g_error()s 2018-04-27 16:46:19 +01:00
gtypemodule.h gtypemodule: Cast *_init functions to void(*)(void) first 2019-01-25 11:29:05 +00:00
gtypeplugin.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gtypeplugin.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gvalue.c Revert last 4 commits 2019-11-26 00:54:15 +01:00
gvalue.h Revert "GValue – Don't cast G_VALUE_TYPE() argument to GValue*" 2018-02-08 14:28:32 +00:00
gvaluearray.c gvaluearray: Mark the whole of GValueArray as deprecated 2019-03-15 11:09:36 +00:00
gvaluearray.h Annotate various types and macros as deprecated 2019-05-30 10:39:11 +01:00
gvaluecollector.h gobject: Add prefixes to variables in G_VALUE_COLLECT*() macros 2018-06-20 16:00:48 +01:00
gvaluetransform.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gvaluetypes.c gobject: Fix various compiler warnings when compiling with G_DISABLE_ASSERT 2019-03-08 19:46:21 +00:00
gvaluetypes.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
libgobject-gdb.py.in Rename gdb macros with _gdb suffix to avoid ns clashes 2016-05-23 10:52:10 -04:00
meson.build Always build tests if we enabled installed-tests 2019-10-01 20:12:16 +01:00