floating point environment, untested
[oweals/musl.git] / src / thread / pthread_setcancelstate.c
index aa0ddcdd316341ec0ab7a685e2e84a5a8a2b149b..ba2b231190436076b1d200bc76fa6e2c5dec9443 100644 (file)
@@ -2,9 +2,14 @@
 
 int pthread_setcancelstate(int new, int *old)
 {
-       struct pthread *self = pthread_self();
-       if (old) *old = self->canceldisable;
        if (new > 1U) return EINVAL;
-       self->canceldisable = new;
+       if (libc.main_thread) {
+               struct pthread *self = __pthread_self();
+               if (old) *old = self->canceldisable;
+               self->canceldisable = new;
+       } else {
+               if (old) *old = libc.canceldisable;
+               libc.canceldisable = new;
+       }
        return 0;
 }