diff options
| author | Rich Felker <dalias@aerifal.cx> | 2011-04-17 12:15:55 -0400 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2011-04-17 12:15:55 -0400 | 
| commit | 02eff258c6a39746db287e20c142153e80c81bac (patch) | |
| tree | b0e258754963d680de74afcbb902e733f5fa87e9 | |
| parent | e74664016b025ea9718da59e680555961444ee4d (diff) | |
| download | musl-02eff258c6a39746db287e20c142153e80c81bac.tar.gz | |
don't use pthread_once when there is no danger in race
| -rw-r--r-- | src/thread/cancel_impl.c | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/src/thread/cancel_impl.c b/src/thread/cancel_impl.c index 28dc84dc..7bcfaef5 100644 --- a/src/thread/cancel_impl.c +++ b/src/thread/cancel_impl.c @@ -71,8 +71,11 @@ static void init_cancellation()  int pthread_cancel(pthread_t t)  { -	static pthread_once_t once; -	pthread_once(&once, init_cancellation); +	static int init; +	if (!init) { +		init_cancellation(); +		init = 1; +	}  	a_store(&t->cancel, 1);  	return pthread_kill(t, SIGCANCEL);  } | 
