diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libkse/thread/thr_sig.c | 3 | ||||
-rw-r--r-- | lib/libpthread/thread/thr_sig.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/lib/libkse/thread/thr_sig.c b/lib/libkse/thread/thr_sig.c index 01b0914..26c1317 100644 --- a/lib/libkse/thread/thr_sig.c +++ b/lib/libkse/thread/thr_sig.c @@ -750,10 +750,12 @@ _thr_sig_check_pending(struct pthread *curthread) { ucontext_t uc; volatile int once; + int errsave; if (THR_IN_CRITICAL(curthread)) return; + errsave = errno; once = 0; THR_GETCONTEXT(&uc); if (once == 0) { @@ -761,6 +763,7 @@ _thr_sig_check_pending(struct pthread *curthread) curthread->check_pending = 0; _thr_sig_rundown(curthread, &uc, NULL); } + errno = errsave; } #ifndef SYSTEM_SCOPE_ONLY diff --git a/lib/libpthread/thread/thr_sig.c b/lib/libpthread/thread/thr_sig.c index 01b0914..26c1317 100644 --- a/lib/libpthread/thread/thr_sig.c +++ b/lib/libpthread/thread/thr_sig.c @@ -750,10 +750,12 @@ _thr_sig_check_pending(struct pthread *curthread) { ucontext_t uc; volatile int once; + int errsave; if (THR_IN_CRITICAL(curthread)) return; + errsave = errno; once = 0; THR_GETCONTEXT(&uc); if (once == 0) { @@ -761,6 +763,7 @@ _thr_sig_check_pending(struct pthread *curthread) curthread->check_pending = 0; _thr_sig_rundown(curthread, &uc, NULL); } + errno = errsave; } #ifndef SYSTEM_SCOPE_ONLY |