From 7c7623c4a31fb0f2a7176c43acc728093818b58c Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Wed, 11 Nov 2020 18:26:19 +0000 Subject: [PATCH 08/29] gdbuserror: Drop unnecessary volatile qualifiers from variables This should introduce no API changes. The `g_dbus_error_register_error_domain()` function still (incorrectly) has a `volatile` argument, but dropping that qualifier would be an API break. Signed-off-by: Philip Withnall Helps: #600 Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] --- gio/gdbuserror.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c index 682677354..b03a33f27 100644 --- a/gio/gdbuserror.c +++ b/gio/gdbuserror.c @@ -84,12 +84,12 @@ * GQuark * foo_bar_error_quark (void) * { - * static volatile gsize quark_volatile = 0; + * static gsize quark = 0; * g_dbus_error_register_error_domain ("foo-bar-error-quark", - * &quark_volatile, + * &quark, * foo_bar_error_entries, * G_N_ELEMENTS (foo_bar_error_entries)); - * return (GQuark) quark_volatile; + * return (GQuark) quark; * } * ]| * With this setup, a D-Bus peer can transparently pass e.g. %FOO_BAR_ERROR_ANOTHER_ERROR and @@ -160,12 +160,12 @@ GQuark g_dbus_error_quark (void) { G_STATIC_ASSERT (G_N_ELEMENTS (g_dbus_error_entries) - 1 == G_DBUS_ERROR_PROPERTY_READ_ONLY); - static volatile gsize quark_volatile = 0; + static gsize quark = 0; g_dbus_error_register_error_domain ("g-dbus-error-quark", - &quark_volatile, + &quark, g_dbus_error_entries, G_N_ELEMENTS (g_dbus_error_entries)); - return (GQuark) quark_volatile; + return (GQuark) quark; } /** @@ -185,25 +185,31 @@ g_dbus_error_register_error_domain (const gchar *error_domain_quark_na const GDBusErrorEntry *entries, guint num_entries) { + gsize *quark; + g_return_if_fail (error_domain_quark_name != NULL); g_return_if_fail (quark_volatile != NULL); g_return_if_fail (entries != NULL); g_return_if_fail (num_entries > 0); - if (g_once_init_enter (quark_volatile)) + /* Drop the volatile qualifier, which should never have been on the argument + * in the first place. */ + quark = (gsize *) quark_volatile; + + if (g_once_init_enter (quark)) { guint n; - GQuark quark; + GQuark new_quark; - quark = g_quark_from_static_string (error_domain_quark_name); + new_quark = g_quark_from_static_string (error_domain_quark_name); for (n = 0; n < num_entries; n++) { - g_warn_if_fail (g_dbus_error_register_error (quark, + g_warn_if_fail (g_dbus_error_register_error (new_quark, entries[n].error_code, entries[n].dbus_error_name)); } - g_once_init_leave (quark_volatile, quark); + g_once_init_leave (quark, new_quark); } } -- 2.30.1