]> wimlib.net Git - wimlib/blobdiff - src/lzms-common.c
lzms-common.c, lzms-compress.c: Use pthread_once()
[wimlib] / src / lzms-common.c
index 92f28c2d13bc6aa6a7716304646f76a49e6201d5..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
@@ -293,7 +285,7 @@ lzms_x86_filter(u8 data[restrict],
        for (s32 i = 0; i < 65536; i++)
                last_target_usages[i] = -LZMS_X86_MAX_GOOD_TARGET_OFFSET - 1;
 
-       for (s32 i = 0; i < size - 11; ) {
+       for (s32 i = 0; i < size - 16; ) {
                s32 max_trans_offset;
                s32 n;