From 5c481f916364ed3b4ec2e01fa7b4309a82ec25b0 Mon Sep 17 00:00:00 2001 From: wlott <wlott> Date: Sat, 3 Nov 1990 16:32:44 +0000 Subject: [PATCH] Save the signal mask when we hit the guard page so we can restore it. --- ldb/interrupt.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ldb/interrupt.c b/ldb/interrupt.c index 4dc6fc5ff..c680c05f7 100644 --- a/ldb/interrupt.c +++ b/ldb/interrupt.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/interrupt.c,v 1.12 1990/10/29 19:24:18 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/interrupt.c,v 1.13 1990/11/03 16:32:44 wlott Exp $ */ /* Interrupt handing magic. */ @@ -216,12 +216,12 @@ struct sigcontext *context; if (pending_signal) { signal = pending_signal; code = pending_code; - context->sc_mask = pending_mask; pending_signal = 0; pending_code = 0; - pending_mask = 0; handle_now(signal, code, context); } + context->sc_mask = pending_mask; + pending_mask = 0; skip_instruction(context); } else @@ -314,7 +314,10 @@ struct sigcontext *context; if (context->sc_regs[FLAGS] & (1<<flag_Atomic)) { maybe_gc_pending = TRUE; - context->sc_mask |= BLOCKABLE; + if (pending_signal == 0) { + pending_mask = context->sc_mask; + context->sc_mask |= BLOCKABLE; + } context->sc_regs[FLAGS] |= (1<<flag_Interrupted); } else { -- GitLab