diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c index c4060070b..e15bbf39c 100644 --- a/libguile/scmsigs.c +++ b/libguile/scmsigs.c @@ -356,7 +356,10 @@ SCM_DEFINE (scm_sigaction_for_thread, "sigaction", 1, 3, 0, install_handler (csig, SCM_BOOL_F, SCM_BOOL_F, async); } else - SCM_OUT_OF_RANGE (2, handler); + { + SCM_CRITICAL_SECTION_END; + SCM_OUT_OF_RANGE (2, handler); + } } else if (scm_is_false (handler)) { diff --git a/test-suite/Makefile.am b/test-suite/Makefile.am index 3b0548278..57edaabb7 100644 --- a/test-suite/Makefile.am +++ b/test-suite/Makefile.am @@ -64,6 +64,7 @@ SCM_TESTS = tests/alist.test \ tests/reader.test \ tests/receive.test \ tests/regexp.test \ + tests/signals.test \ tests/socket.test \ tests/srcprop.test \ tests/srfi-1.test \ diff --git a/test-suite/tests/signals.test b/test-suite/tests/signals.test new file mode 100644 index 000000000..7cab85e18 --- /dev/null +++ b/test-suite/tests/signals.test @@ -0,0 +1,29 @@ +;;;; signals.test --- test suite for Guile's signal functions -*- scheme -*- +;;;; +;;;; Copyright (C) 2009 Free Software Foundation, Inc. +;;;; +;;;; This program is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU General Public License as published by +;;;; the Free Software Foundation; either version 2, or (at your option) +;;;; any later version. +;;;; +;;;; This program is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;;; GNU General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU General Public License +;;;; along with this software; see the file COPYING. If not, write to +;;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;;;; Boston, MA 02110-1301 USA + + +(use-modules (test-suite lib)) + +(with-test-prefix "sigaction" + + (pass-if-exception "handler arg is an invalid integer" + exception:out-of-range + (sigaction SIGINT 51)) + + )