From: Gabor Melis Date: Fri, 26 Aug 2005 19:33:47 +0000 (+0000) Subject: 0.9.4.3: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=70227794f1eefb567c13ec04f7bd6d3b6794aa29;p=sbcl.git 0.9.4.3: * SIGFPE is not deferrable --- diff --git a/src/runtime/interrupt.c b/src/runtime/interrupt.c index 79275ef..d822ceb 100644 --- a/src/runtime/interrupt.c +++ b/src/runtime/interrupt.c @@ -83,7 +83,6 @@ void sigaddset_deferrable(sigset_t *s) sigaddset(s, SIGPIPE); sigaddset(s, SIGALRM); sigaddset(s, SIGURG); - sigaddset(s, SIGFPE); sigaddset(s, SIGTSTP); sigaddset(s, SIGCHLD); sigaddset(s, SIGIO); @@ -423,7 +422,8 @@ interrupt_handle_now(int signal, siginfo_t *info, void *void_context) #endif union interrupt_handler handler; check_blockables_blocked_or_lose(); - check_interrupts_enabled_or_lose(context); + if (sigismember(&deferrable_sigset,signal)) + check_interrupts_enabled_or_lose(context); #ifdef LISP_FEATURE_LINUX /* Under Linux on some architectures, we appear to have to restore diff --git a/tests/float.pure.lisp b/tests/float.pure.lisp index 1d38c03..81a10f5 100644 --- a/tests/float.pure.lisp +++ b/tests/float.pure.lisp @@ -115,3 +115,11 @@ (phase (the (eql #c(1.0d0 2.0d0)) p1)))) #c(1.0d0 2.0d0)) 'double-float)) + +(assert (typep (nth-value + 1 + (ignore-errors + (sb-sys:without-interrupts + (loop repeat 2 summing most-positive-double-float) + (sleep 2)))) + 'floating-point-overflow)) diff --git a/version.lisp-expr b/version.lisp-expr index 4d0c64c..d2cd328 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.4.2" +"0.9.4.3"