summaryrefslogtreecommitdiff
path: root/src/thread/pthread_detach.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-07-12 11:23:43 -0400
committerRich Felker <dalias@aerifal.cx>2012-07-12 11:23:43 -0400
commitbbbe87e35cfeef593e23010e35528e722027567f (patch)
tree6027b9323ad2232739d6ea85c9568a654ca1e506 /src/thread/pthread_detach.c
parentc89f130f39b413d1fb1733166ca63d694685c529 (diff)
downloadmusl-bbbe87e35cfeef593e23010e35528e722027567f.tar.gz
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.c4
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;
}