summary refs log tree commit diff
path: root/pkgs/development/libraries/glib/quark_init_on_demand.patch
blob: 168086484314f2ca623851dbab1757230f9f52d7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
--- glib-source/glib/gquark.c	2016-08-17 17:20:47.000000000 +0200
+++ glib-source/glib/gquark.c	2016-08-30 07:49:13.298234757 +0200
@@ -57,6 +57,9 @@
 void
 g_quark_init (void)
 {
+  if (quark_ht)
+    return;
+
   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);
@@ -138,9 +141,12 @@
     return 0;
 
   G_LOCK (quark_global);
+#if !defined(__GLIBC__)
+  g_quark_init ();
+#endif
   quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
   G_UNLOCK (quark_global);

   return quark;
 }
 
@@ -280,6 +286,7 @@
   GQuark quark;
   gchar **quarks_new;
 
+  g_quark_init ();
   if (quark_seq_id % QUARK_BLOCK_SIZE == 0)
     {
       quarks_new = g_new (gchar*, quark_seq_id + QUARK_BLOCK_SIZE);