diff --git a/lisp/interrupt.c b/lisp/interrupt.c
index 0d98948a418c549d149e09e632fa10985e1cc74a..2e9c8f425d38e3f05be76e0c75ebbc77461cdb2f 100644
--- a/lisp/interrupt.c
+++ b/lisp/interrupt.c
@@ -1,4 +1,4 @@
-/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.11 1997/11/21 12:20:34 dtc Exp $ */
+/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.12 1997/11/22 14:38:21 dtc Exp $ */
 
 /* Interrupt handing magic. */
 
@@ -205,6 +205,15 @@ interrupt_handle_pending(struct sigcontext *context)
 	if (were_in_lisp)
 	    undo_fake_foreign_function_call(context);
     }
+
+#ifdef POSIX_SIGS
+    context->uc_sigmask = pending_mask;
+    sigemptyset(&pending_mask);
+#else
+    context->sc_mask = pending_mask;
+    pending_mask = 0;
+#endif
+
     if (pending_signal) {
 	int signal;
 #ifdef SOLARIS
@@ -222,13 +231,6 @@ interrupt_handle_pending(struct sigcontext *context)
 	interrupt_handle_now(signal, PASSCODE(code), context);
 #endif
     }
-#ifdef POSIX_SIGS
-    context->uc_sigmask = pending_mask;
-    sigemptyset(&pending_mask);
-#else
-    context->sc_mask = pending_mask;
-    pending_mask = 0;
-#endif
 }