summaryrefslogtreecommitdiffstats
path: root/signal.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-08-01 22:09:24 -0700
committerKaz Kylheku <kaz@kylheku.com>2014-08-01 22:09:24 -0700
commit3c616876604219141ad1088e372c91928508f089 (patch)
tree24d70ed56ae73ac1efdf483d03d5cedc1d3b76f4 /signal.c
parent94dd3a05573c6fdd0662478ed5d57cef9d7e8b81 (diff)
downloadtxr-3c616876604219141ad1088e372c91928508f089.tar.gz
txr-3c616876604219141ad1088e372c91928508f089.tar.bz2
txr-3c616876604219141ad1088e372c91928508f089.zip
* signal.c (set_sig_handler): Don't use SA_ONSTACK
except for signals for which we use alt stack. * signal.h (sig_save_enable): Do sig_check before enabling async signals. This caused the !async_sig_enabled assertion to trip inside make_obj.
Diffstat (limited to 'signal.c')
-rw-r--r--signal.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/signal.c b/signal.c
index 33aa2282..305fee89 100644
--- a/signal.c
+++ b/signal.c
@@ -236,9 +236,10 @@ val set_sig_handler(val signo, val lambda)
sa.sa_handler = sig_handler;
sigfillset(&sa.sa_mask);
#if HAVE_SIGALTSTACK
- if (sig == SIGSEGV || sig == SIGBUS)
+ if (sig == SIGSEGV || sig == SIGBUS) {
setup_alt_stack();
- sa.sa_flags |= SA_ONSTACK;
+ sa.sa_flags |= SA_ONSTACK;
+ }
#endif
sigaction(sig, &sa, 0);
}