This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMU Common Lisp".
The branch, master has been updated via d6cb31e417a1f73fcd326de8534f6a3da0f2cc89 (commit) from ce8d55de55c26673c07c985bc21db14c2e2652b5 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit d6cb31e417a1f73fcd326de8534f6a3da0f2cc89 Author: Raymond Toy toy.raymond@gmail.com Date: Fri Feb 3 19:47:29 2012 -0800
Fix ticket:55. Copy all of the sigmask instead of just a few. This only affected linux which uses an array for the sigmask.
diff --git a/src/lisp/interrupt.c b/src/lisp/interrupt.c index de17cee..b6332f5 100644 --- a/src/lisp/interrupt.c +++ b/src/lisp/interrupt.c @@ -169,6 +169,16 @@ interrupt_internal_error(HANDLER_ARGS, boolean continuable) arch_skip_instruction(context); }
+static void +copy_sigmask(sigset_t *dst, sigset_t *src) +{ +#ifndef __linux__ + *dst = *src; +#else + memcpy(dst, src, NSIG / 8); +#endif +} + void interrupt_handle_pending(os_context_t * context) { @@ -190,11 +200,8 @@ interrupt_handle_pending(os_context_t * context) #endif undo_fake_foreign_function_call(context); } -#ifndef __linux__ - context->uc_sigmask = pending_mask; -#else - memcpy(&context->uc_sigmask, &pending_mask, NSIG / LONG_BIT); -#endif + + copy_sigmask(&context->uc_sigmask, &pending_mask); sigemptyset(&pending_mask);
if (pending_signal) { @@ -300,7 +307,7 @@ setup_pending_signal(HANDLER_ARGS) * */ pending_code.si_code = CODE(code); - pending_mask = ucontext->uc_sigmask; + copy_sigmask(&pending_mask, &ucontext->uc_sigmask); FILLBLOCKSET(&ucontext->uc_sigmask); }
@@ -372,11 +379,7 @@ interrupt_maybe_gc(HANDLER_ARGS) if (arch_pseudo_atomic_atomic(context)) { maybe_gc_pending = TRUE; if (pending_signal == 0) { -#ifndef __linux__ - pending_mask = context->uc_sigmask; -#else - memcpy(&pending_mask, &context->uc_sigmask, NSIG / LONG_BIT); -#endif + copy_sigmask(&pending_mask, &context->uc_sigmask); FILLBLOCKSET(&context->uc_sigmask); } arch_set_pseudo_atomic_interrupted(context);
-----------------------------------------------------------------------
Summary of changes: src/lisp/interrupt.c | 25 ++++++++++++++----------- 1 files changed, 14 insertions(+), 11 deletions(-)
hooks/post-receive