Page MenuHomeFreeBSD

D44893.diff
No OneTemporary

D44893.diff

diff --git a/lib/libthr/thread/thr_sig.c b/lib/libthr/thread/thr_sig.c
--- a/lib/libthr/thread/thr_sig.c
+++ b/lib/libthr/thread/thr_sig.c
@@ -247,7 +247,6 @@
handle_signal(struct sigaction *actp, int sig, siginfo_t *info, ucontext_t *ucp)
{
struct pthread *curthread = _get_curthread();
- ucontext_t uc2;
__siginfohandler_t *sigfunc;
int cancel_point;
int cancel_async;
@@ -307,13 +306,11 @@
curthread->cancel_point = cancel_point;
curthread->cancel_enable = cancel_enable;
- memcpy(&uc2, ucp, sizeof(uc2));
- SIGDELSET(uc2.uc_sigmask, SIGCANCEL);
+ SIGDELSET(ucp->uc_sigmask, SIGCANCEL);
/* reschedule cancellation */
- check_cancel(curthread, &uc2);
+ check_cancel(curthread, ucp);
errno = err;
- syscall(SYS_sigreturn, &uc2);
}
void
@@ -400,6 +397,7 @@
/* remove signal */
curthread->deferred_siginfo.si_signo = 0;
handle_signal(&act, info.si_signo, &info, uc);
+ syscall(SYS_sigreturn, uc);
}
static void

File Metadata

Mime Type
text/plain
Expires
Sat, Sep 28, 7:41 AM (18 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
12997984
Default Alt Text
D44893.diff (947 B)

Event Timeline