diff options
author | davidxu <davidxu@FreeBSD.org> | 2014-03-13 06:54:10 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2014-03-13 06:54:10 +0000 |
commit | 18f2ff55c55c58c0733e90b526031fc14b3f70a9 (patch) | |
tree | dfcefbe2795bcacb7151db6f861ef6db6e5871ec /lib | |
parent | ab96e8ac8cdb48708521c366d4e23f99a92aa2d0 (diff) | |
download | FreeBSD-src-18f2ff55c55c58c0733e90b526031fc14b3f70a9.zip FreeBSD-src-18f2ff55c55c58c0733e90b526031fc14b3f70a9.tar.gz |
To avoid missing a chance to cancel thread, call _pthread_testcancel at the
beginning of _sem_timedwait.
Submitted by: Eric van Gyzen < eric at vangyzen dot net >
MFC after: 3 days
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/gen/sem_new.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/libc/gen/sem_new.c b/lib/libc/gen/sem_new.c index 1bf84ea..9a2ab27 100644 --- a/lib/libc/gen/sem_new.c +++ b/lib/libc/gen/sem_new.c @@ -381,6 +381,7 @@ _sem_timedwait(sem_t * __restrict sem, return (-1); retval = 0; + _pthread_testcancel(); for (;;) { while ((val = sem->_kern._count) > 0) { if (atomic_cmpset_acq_int(&sem->_kern._count, val, val - 1)) |