Andrew Geissler | 95ac1b8 | 2021-03-31 14:34:31 -0500 | [diff] [blame] | 1 | From 7c7623c4a31fb0f2a7176c43acc728093818b58c Mon Sep 17 00:00:00 2001 |
| 2 | From: Philip Withnall <pwithnall@endlessos.org> |
| 3 | Date: Wed, 11 Nov 2020 18:26:19 +0000 |
| 4 | Subject: [PATCH 08/29] gdbuserror: Drop unnecessary volatile qualifiers from |
| 5 | variables |
| 6 | |
| 7 | This should introduce no API changes. The |
| 8 | `g_dbus_error_register_error_domain()` function still (incorrectly) has |
| 9 | a `volatile` argument, but dropping that qualifier would be an API |
| 10 | break. |
| 11 | |
| 12 | Signed-off-by: Philip Withnall <pwithnall@endlessos.org> |
| 13 | |
| 14 | Helps: #600 |
| 15 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] |
| 16 | --- |
| 17 | gio/gdbuserror.c | 28 +++++++++++++++++----------- |
| 18 | 1 file changed, 17 insertions(+), 11 deletions(-) |
| 19 | |
| 20 | diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c |
| 21 | index 682677354..b03a33f27 100644 |
| 22 | --- a/gio/gdbuserror.c |
| 23 | +++ b/gio/gdbuserror.c |
| 24 | @@ -84,12 +84,12 @@ |
| 25 | * GQuark |
| 26 | * foo_bar_error_quark (void) |
| 27 | * { |
| 28 | - * static volatile gsize quark_volatile = 0; |
| 29 | + * static gsize quark = 0; |
| 30 | * g_dbus_error_register_error_domain ("foo-bar-error-quark", |
| 31 | - * &quark_volatile, |
| 32 | + * &quark, |
| 33 | * foo_bar_error_entries, |
| 34 | * G_N_ELEMENTS (foo_bar_error_entries)); |
| 35 | - * return (GQuark) quark_volatile; |
| 36 | + * return (GQuark) quark; |
| 37 | * } |
| 38 | * ]| |
| 39 | * With this setup, a D-Bus peer can transparently pass e.g. %FOO_BAR_ERROR_ANOTHER_ERROR and |
| 40 | @@ -160,12 +160,12 @@ GQuark |
| 41 | g_dbus_error_quark (void) |
| 42 | { |
| 43 | G_STATIC_ASSERT (G_N_ELEMENTS (g_dbus_error_entries) - 1 == G_DBUS_ERROR_PROPERTY_READ_ONLY); |
| 44 | - static volatile gsize quark_volatile = 0; |
| 45 | + static gsize quark = 0; |
| 46 | g_dbus_error_register_error_domain ("g-dbus-error-quark", |
| 47 | - &quark_volatile, |
| 48 | + &quark, |
| 49 | g_dbus_error_entries, |
| 50 | G_N_ELEMENTS (g_dbus_error_entries)); |
| 51 | - return (GQuark) quark_volatile; |
| 52 | + return (GQuark) quark; |
| 53 | } |
| 54 | |
| 55 | /** |
| 56 | @@ -185,25 +185,31 @@ g_dbus_error_register_error_domain (const gchar *error_domain_quark_na |
| 57 | const GDBusErrorEntry *entries, |
| 58 | guint num_entries) |
| 59 | { |
| 60 | + gsize *quark; |
| 61 | + |
| 62 | g_return_if_fail (error_domain_quark_name != NULL); |
| 63 | g_return_if_fail (quark_volatile != NULL); |
| 64 | g_return_if_fail (entries != NULL); |
| 65 | g_return_if_fail (num_entries > 0); |
| 66 | |
| 67 | - if (g_once_init_enter (quark_volatile)) |
| 68 | + /* Drop the volatile qualifier, which should never have been on the argument |
| 69 | + * in the first place. */ |
| 70 | + quark = (gsize *) quark_volatile; |
| 71 | + |
| 72 | + if (g_once_init_enter (quark)) |
| 73 | { |
| 74 | guint n; |
| 75 | - GQuark quark; |
| 76 | + GQuark new_quark; |
| 77 | |
| 78 | - quark = g_quark_from_static_string (error_domain_quark_name); |
| 79 | + new_quark = g_quark_from_static_string (error_domain_quark_name); |
| 80 | |
| 81 | for (n = 0; n < num_entries; n++) |
| 82 | { |
| 83 | - g_warn_if_fail (g_dbus_error_register_error (quark, |
| 84 | + g_warn_if_fail (g_dbus_error_register_error (new_quark, |
| 85 | entries[n].error_code, |
| 86 | entries[n].dbus_error_name)); |
| 87 | } |
| 88 | - g_once_init_leave (quark_volatile, quark); |
| 89 | + g_once_init_leave (quark, new_quark); |
| 90 | } |
| 91 | } |
| 92 | |
| 93 | -- |
| 94 | 2.30.1 |
| 95 | |