lzms-common.c, lzms-compress.c: Use pthread_once()
[wimlib] / src / lzms-compress.c
index 763be005b071625f16f086ac48747707996fbe8c..2c9356d9b1a538006a7fc9dcae90404bc2c271a2 100644 (file)
@@ -666,17 +666,9 @@ lzms_do_init_rc_costs(void)
 static void
 lzms_init_rc_costs(void)
 {
-       static bool done = false;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-
-       if (unlikely(!done)) {
-               pthread_mutex_lock(&mutex);
-               if (!done) {
-                       lzms_do_init_rc_costs();
-                       done = true;
-               }
-               pthread_mutex_unlock(&mutex);
-       }
+       static pthread_once_t once = PTHREAD_ONCE_INIT;
+
+       pthread_once(&once, lzms_do_init_rc_costs);
 }
 
 /*