lzms-common.c, lzms-compress.c: Use pthread_once()
[wimlib] / src / lzms-common.c
index a34fb245265bc5dab3013535ec16198aed593cbf..c657ef4aabccd60f58df5c5061b8c2587e8b28d8 100644 (file)
@@ -165,17 +165,9 @@ lzms_compute_slots(void)
 void
 lzms_init_slots(void)
 {
-       static bool done = false;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-
-       if (unlikely(!done)) {
-               pthread_mutex_lock(&mutex);
-               if (!done) {
-                       lzms_compute_slots();
-                       done = true;
-               }
-               pthread_mutex_unlock(&mutex);
-       }
+       static pthread_once_t once = PTHREAD_ONCE_INIT;
+
+       pthread_once(&once, lzms_compute_slots);
 }
 
 static s32