X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fthread%2Fpthread_once.c;h=8e8d40ae8331dad752553bac7f1ccaac8e909efa;hb=1ef37aa00ea830dfda76e04e3d941cafa74d8b76;hp=df655ef9a4c8850594e9fbbfe4b0d34ff1821890;hpb=dc95322e18615392eea69de355edd735a15a8f36;p=musl diff --git a/src/thread/pthread_once.c b/src/thread/pthread_once.c index df655ef9..8e8d40ae 100644 --- a/src/thread/pthread_once.c +++ b/src/thread/pthread_once.c @@ -8,7 +8,7 @@ static void undo(void *control) __wake(control, -1, 1); } -int __pthread_once_full(pthread_once_t *control, void (*init)(void)) +hidden int __pthread_once_full(pthread_once_t *control, void (*init)(void)) { /* Try to enter initializing state. Four possibilities: * 0 - we're the first or the other cancelled; run init @@ -40,7 +40,7 @@ int __pthread_once(pthread_once_t *control, void (*init)(void)) { /* Return immediately if init finished before, but ensure that * effects of the init routine are visible to the caller. */ - if (*control == 2) { + if (*(volatile int *)control == 2) { a_barrier(); return 0; }