static guint
get_random_version (void)
{
- static gboolean initialized = FALSE;
+ static gsize initialized = FALSE;
static guint random_version;
-
- if (!initialized)
+
+ if (g_once_init_enter (&initialized))
{
const gchar *version_string = g_getenv ("G_RANDOM_VERSION");
if (!version_string || version_string[0] == '\000' ||
version_string);
random_version = 22;
}
- initialized = TRUE;
+ g_once_init_leave (&initialized, TRUE);
}
return random_version;
}
-/* This is called from g_thread_init(). It's used to
- * initialize some static data in a threadsafe way.
- */
-void
-_g_rand_thread_init (void)
-{
- (void)get_random_version ();
-}
-
struct _GRand
{
guint32 mt[N]; /* the array for the state vector */
/* we may run full-fledged initializers from here */
_g_convert_thread_init ();
- _g_rand_thread_init ();
_g_main_thread_init ();
_g_utils_thread_init ();
}
/* full fledged initializers */
G_GNUC_INTERNAL void _g_convert_thread_init (void);
-G_GNUC_INTERNAL void _g_rand_thread_init (void);
G_GNUC_INTERNAL void _g_main_thread_init (void);
G_GNUC_INTERNAL void _g_atomic_thread_init (void);
G_GNUC_INTERNAL void _g_utils_thread_init (void);