From ca32c60a815f91a28e63993e9b53a2cfa0764240 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 2 Oct 2015 08:11:53 +0200 Subject: [PATCH] Revert "Move quark initialization to a constructor" musl's does not run ctors in the assumed order that glib-2.46 expects: - glib_init() should be called before gobject_init_ctor(). This reverts commit 2fe992b099bfd3fb121a71b7af43e116b2142b5d. --- glib/glib-init.c | 1 - glib/glib-init.h | 2 -- glib/gquark.c | 26 ++++++++++++-------------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/glib/glib-init.c b/glib/glib-init.c index e7002e6..24efe9d 100644 --- a/glib/glib-init.c +++ b/glib/glib-init.c @@ -233,7 +233,6 @@ glib_init (void) { g_messages_prefixed_init (); g_debug_init (); - g_quark_init (); } #if defined (G_OS_WIN32) diff --git a/glib/glib-init.h b/glib/glib-init.h index b56f7e2..de6be78 100644 --- a/glib/glib-init.h +++ b/glib/glib-init.h @@ -25,8 +25,6 @@ extern GLogLevelFlags g_log_always_fatal; extern GLogLevelFlags g_log_msg_prefix; -void g_quark_init (void); - #ifdef G_OS_WIN32 #include diff --git a/glib/gquark.c b/glib/gquark.c index 9e51a92..d620533 100644 --- a/glib/gquark.c +++ b/glib/gquark.c @@ -40,7 +40,6 @@ #include "gthread.h" #include "gtestutils.h" #include "glib_trace.h" -#include "glib-init.h" #define QUARK_BLOCK_SIZE 2048 #define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize)) @@ -54,16 +53,6 @@ static gint quark_seq_id = 0; static gchar *quark_block = NULL; static gint quark_block_offset = 0; -void -g_quark_init (void) -{ - g_assert (quark_seq_id == 0); - quark_ht = g_hash_table_new (g_str_hash, g_str_equal); - quarks = g_new (gchar*, QUARK_BLOCK_SIZE); - quarks[0] = NULL; - quark_seq_id = 1; -} - /** * SECTION:quarks * @title: Quarks @@ -138,9 +127,10 @@ g_quark_try_string (const gchar *string) return 0; G_LOCK (quark_global); - quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); + if (quark_ht) + quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); G_UNLOCK (quark_global); - + return quark; } @@ -179,7 +169,8 @@ quark_from_string (const gchar *string, { GQuark quark = 0; - quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); + if (quark_ht) + quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); if (!quark) { @@ -292,6 +283,13 @@ quark_new (gchar *string) */ g_atomic_pointer_set (&quarks, quarks_new); } + if (!quark_ht) + { + g_assert (quark_seq_id == 0); + quark_ht = g_hash_table_new (g_str_hash, g_str_equal); + quarks[quark_seq_id] = NULL; + g_atomic_int_inc (&quark_seq_id); + } quark = quark_seq_id; g_atomic_pointer_set (&quarks[quark], string); -- 2.6.0