summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré <abs@emancipe.se>2023-08-13 01:21:49 -0300
committerPhilip Withnall <philip@tecnocode.co.uk>2023-08-14 09:15:29 +0100
commit572f8ab534a2a28737303dc4ea26f927e4a72f99 (patch)
treeff921144226e4aca9d79458d460843c0d954a77e
parentf522c3f94d67493c58e9b0e27a7862c2e7ec105b (diff)
downloadglib-572f8ab534a2a28737303dc4ea26f927e4a72f99.tar.gz
gmenuexporter: synchronization in org_gtk_Menus_get_interface.
Protects the mutation inside org_gtk_Menus_get_interface with g_once_init_{enter,leave}. Fixes #3051.
-rw-r--r--gio/gmenuexporter.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gio/gmenuexporter.c b/gio/gmenuexporter.c
index 1860b34e8..67aac19da 100644
--- a/gio/gmenuexporter.c
+++ b/gio/gmenuexporter.c
@@ -53,8 +53,9 @@ static GDBusInterfaceInfo *
org_gtk_Menus_get_interface (void)
{
static GDBusInterfaceInfo *interface_info;
+ static gsize interface_info_initialized = 0;
- if (interface_info == NULL)
+ if (g_once_init_enter (&interface_info_initialized))
{
GError *error = NULL;
GDBusNodeInfo *info;
@@ -79,6 +80,8 @@ org_gtk_Menus_get_interface (void)
g_assert (interface_info != NULL);
g_dbus_interface_info_ref (interface_info);
g_dbus_node_info_unref (info);
+
+ g_once_init_leave (&interface_info_initialized, 1);
}
return interface_info;