[evolution] I#53 - Address Helgrind warning about lock acquire order
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#53 - Address Helgrind warning about lock acquire order
- Date: Wed, 11 Jul 2018 14:26:43 +0000 (UTC)
commit 8e1ebeffe08e1b199ad275e7bf8ac78c253865f5
Author: Milan Crha <mcrha redhat com>
Date: Wed Jul 11 16:23:03 2018 +0200
I#53 - Address Helgrind warning about lock acquire order
Closes https://gitlab.gnome.org/GNOME/evolution/issues/53
src/libemail-engine/e-mail-session.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
---
diff --git a/src/libemail-engine/e-mail-session.c b/src/libemail-engine/e-mail-session.c
index 2270d7c0ab..65c3420b2e 100644
--- a/src/libemail-engine/e-mail-session.c
+++ b/src/libemail-engine/e-mail-session.c
@@ -1693,6 +1693,17 @@ mail_session_create_vfolder_context (EMailSession *session)
return em_vfolder_context_new ();
}
+static gpointer
+mail_session_init_null_provider_once (gpointer unused)
+{
+ camel_null_store_register_provider ();
+
+ /* Make sure ESourceCamel picks up the "none" provider. */
+ e_source_camel_generate_subtype ("none", CAMEL_TYPE_SETTINGS);
+
+ return NULL;
+}
+
static void
e_mail_session_class_init (EMailSessionClass *class)
{
@@ -1879,19 +1890,19 @@ e_mail_session_class_init (EMailSessionClass *class)
G_TYPE_STRING, 2,
G_TYPE_UINT,
G_TYPE_STRING);
-
- camel_null_store_register_provider ();
-
- /* Make sure ESourceCamel picks up the "none" provider. */
- e_source_camel_generate_subtype ("none", CAMEL_TYPE_SETTINGS);
}
static void
e_mail_session_init (EMailSession *session)
{
+ static GOnce init_null_provider_once = G_ONCE_INIT;
GHashTable *auto_refresh_table;
GHashTable *junk_filters;
+ /* Do not call this from the class_init(), to avoid a claim from Helgrind about a lock
+ order violation between CamelProvider's global lock and glib's GType lock. */
+ g_once (&init_null_provider_once, mail_session_init_null_provider_once, NULL);
+
auto_refresh_table = g_hash_table_new_full (
(GHashFunc) g_str_hash,
(GEqualFunc) g_str_equal,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]