From 744b83406440819e114cf509ff850c304172fae8 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Sat, 6 Jul 1991 21:42:41 +0000 Subject: [PATCH] In `dstack_set_position', must unblock signals while the protector runs, and re-block afterwards, in case the protector does something to change the signal mask. Otherwise, the change to the signal mask will be undone when the final call to unblock_signals is performed. --- v7/src/microcode/wind.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/v7/src/microcode/wind.c b/v7/src/microcode/wind.c index 3c71f7826..834fe8603 100644 --- a/v7/src/microcode/wind.c +++ b/v7/src/microcode/wind.c @@ -14,7 +14,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/wind.c,v 1.3 1991/07/05 23:28:57 cph Exp $ */ +/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/wind.c,v 1.4 1991/07/06 21:42:41 cph Exp $ */ #include #include "obstack.h" @@ -141,7 +141,14 @@ DEFUN (dstack_set_position, (position), PTR position) { PTR sp = dstack_position; struct winding_record * record = current_winding_record; + /* Must unblock signals while the protector runs, and + re-block afterwards, in case the protector does something + to change the signal mask. Otherwise, the change to the + signal mask will be undone when the final call to + unblock_signals is performed. */ + unblock_signals (); (* (record -> protector)) (record -> environment); + block_signals (); if (sp != dstack_position) error ("dstack_set_position", "stack slipped during unwind"); current_winding_record = (record -> next); -- 2.25.1