From 6705464db0fefe9befeb9061e80bf77cb1a54bed Mon Sep 17 00:00:00 2001 From: David Xu Date: Tue, 19 Aug 2003 03:33:51 +0000 Subject: [PATCH] Save and restore errno around sigprocmask. --- lib/libkse/thread/thr_fork.c | 6 +++++- lib/libpthread/thread/thr_fork.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/libkse/thread/thr_fork.c b/lib/libkse/thread/thr_fork.c index 6408fef6b28..f64061463a3 100644 --- a/lib/libkse/thread/thr_fork.c +++ b/lib/libkse/thread/thr_fork.c @@ -48,6 +48,7 @@ _fork(void) sigset_t sigset, oldset; struct pthread *curthread; pid_t ret; + int errsave; if (!_kse_isthreaded()) return (__sys_fork()); @@ -71,8 +72,11 @@ _fork(void) _kse_single_thread(curthread); /* Kernel signal mask is restored in _kse_single_thread */ } else { - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) + if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { + errsave = errno; __sys_sigprocmask(SIG_SETMASK, &oldset, NULL); + errno = errsave; + } } /* Return the process ID: */ diff --git a/lib/libpthread/thread/thr_fork.c b/lib/libpthread/thread/thr_fork.c index 6408fef6b28..f64061463a3 100644 --- a/lib/libpthread/thread/thr_fork.c +++ b/lib/libpthread/thread/thr_fork.c @@ -48,6 +48,7 @@ _fork(void) sigset_t sigset, oldset; struct pthread *curthread; pid_t ret; + int errsave; if (!_kse_isthreaded()) return (__sys_fork()); @@ -71,8 +72,11 @@ _fork(void) _kse_single_thread(curthread); /* Kernel signal mask is restored in _kse_single_thread */ } else { - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) + if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { + errsave = errno; __sys_sigprocmask(SIG_SETMASK, &oldset, NULL); + errno = errsave; + } } /* Return the process ID: */