consistently use the LOCK an UNLOCK macros
[oweals/musl.git] / src / thread / pthread_detach.c
index 134826078df3f7805ea5f2e3a85088108dfc3ef5..692bbaf9cb643d111c69dc52ac8f5acda2eb89d5 100644 (file)
@@ -6,11 +6,10 @@ int __pthread_join(pthread_t, void **);
 static int __pthread_detach(pthread_t t)
 {
        /* Cannot detach a thread that's already exiting */
-       if (a_swap(t->exitlock, 1))
+       if (a_cas(t->exitlock, 0, INT_MIN + 1))
                return __pthread_join(t, 0);
        t->detached = 2;
-       a_store(t->exitlock, 0);
-       __wake(t->exitlock, 1, 1);
+       UNLOCK(t->exitlock);
        return 0;
 }