diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-07-12 11:23:43 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-07-12 11:23:43 -0400 |
commit | bbbe87e35cfeef593e23010e35528e722027567f (patch) | |
tree | 6027b9323ad2232739d6ea85c9568a654ca1e506 /src/thread/pthread_detach.c | |
parent | c89f130f39b413d1fb1733166ca63d694685c529 (diff) | |
download | musl-bbbe87e35cfeef593e23010e35528e722027567f.tar.gz musl-bbbe87e35cfeef593e23010e35528e722027567f.tar.bz2 musl-bbbe87e35cfeef593e23010e35528e722027567f.tar.xz musl-bbbe87e35cfeef593e23010e35528e722027567f.zip |
fix several locks that weren't updated right for new futex-based __lock
these could have caused memory corruption due to invalid accesses to
the next field. all should be fixed now; I found the errors with fgrep
-r '__lock(&', which is bogus since the argument should be an array.
Diffstat (limited to 'src/thread/pthread_detach.c')
-rw-r--r-- | src/thread/pthread_detach.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/thread/pthread_detach.c b/src/thread/pthread_detach.c index e8032398..651c38eb 100644 --- a/src/thread/pthread_detach.c +++ b/src/thread/pthread_detach.c @@ -3,9 +3,9 @@ int pthread_detach(pthread_t t) { /* Cannot detach a thread that's already exiting */ - if (a_swap(&t->exitlock, 1)) + if (a_swap(t->exitlock, 1)) return pthread_join(t, 0); t->detached = 2; - a_store(&t->exitlock, 0); + __unlock(t->exitlock); return 0; } |