From 47c157178573308e313f5135d0ae22dc4e390fd9 Mon Sep 17 00:00:00 2001 From: Daniel Eischen Date: Mon, 20 Nov 2000 13:12:44 +0000 Subject: Change a "while {}" loop to a "do {} while" to allow it to be executed at least once, fixing pthread_mutex_lock() for recursive mutex lock attempts. Correctly set a threads signal mask while it is executing a signal handler. The mask should be the union of its current mask, the signal being handled, and the mask from the signal action. Reported by: Dan Nelson MFC Candidate --- lib/libc_r/uthread/uthread_sig.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/libc_r/uthread/uthread_sig.c') diff --git a/lib/libc_r/uthread/uthread_sig.c b/lib/libc_r/uthread/uthread_sig.c index 3ac974036c55..a855a61aeeee 100644 --- a/lib/libc_r/uthread/uthread_sig.c +++ b/lib/libc_r/uthread/uthread_sig.c @@ -1057,6 +1057,10 @@ thread_sigframe_add(pthread_t thread, int sig, int has_args) sizeof(psf->siginfo)); } + /* Setup the signal mask: */ + SIGSETOR(thread->sigmask, _thread_sigact[sig - 1].sa_mask); + sigaddset(&thread->sigmask, sig); + /* Set up the new frame: */ thread->curframe = psf; thread->ctxtype = CTX_JB_NOSIG; -- cgit v1.2.3