gobject: use g_once_init_enter_pointer for GType initializers

GType is either an integer or a pointer, so we have to use the _pointer
version here to support architectures such as Morello.

Helps: https://gitlab.gnome.org/GNOME/glib/-/issues/2842
See also: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3578
This commit is contained in:
Alex Richardson
2023-09-12 01:26:21 -07:00
committed by Philip Withnall
parent a1dfecf11f
commit 5ecd3cbe52
10 changed files with 57 additions and 47 deletions

View File

@@ -1631,7 +1631,7 @@ g_param_spec_get_default_value (GParamSpec *pspec)
* done before a g_once_init_enter() could take the fast path in
* another thread.
*/
if (g_once_init_enter (&priv->default_value.g_type))
if (g_once_init_enter_pointer (&priv->default_value.g_type))
{
GValue default_value = G_VALUE_INIT;
@@ -1641,7 +1641,7 @@ g_param_spec_get_default_value (GParamSpec *pspec)
/* store all but the type */
memcpy (priv->default_value.data, default_value.data, sizeof (default_value.data));
g_once_init_leave (&priv->default_value.g_type, pspec->value_type);
g_once_init_leave_pointer (&priv->default_value.g_type, pspec->value_type);
}
return &priv->default_value;