diff options
author | Neil Jerram <neil@ossau.uklinux.net> | 2009-03-05 20:03:33 +0000 |
---|---|---|
committer | Neil Jerram <neil@ossau.uklinux.net> | 2009-09-30 21:39:01 +0100 |
commit | 09d978f3f81d7ae43ba952de8dc568f54f5f80b6 (patch) | |
tree | b70ff32638ed1e32cf9df95813d829b900e56838 /libguile/scmsigs.c | |
parent | 43b03fbbdc8d3eddc04daa1a14c5e2eae3ee5a1f (diff) | |
download | guile-09d978f3f81d7ae43ba952de8dc568f54f5f80b6.tar.gz |
Avoid throw from critical section, given invalid sigaction call
* libguile/scmsigs.c (scm_sigaction_for_thread): Exit critical section
before raising out-of-range error.
* test-suite/Makefile.am (SCM_TESTS): Add signals.test.
* test-suite/tests/signals.test: New file.
Diffstat (limited to 'libguile/scmsigs.c')
-rw-r--r-- | libguile/scmsigs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c index d9b36c574..f38d15c75 100644 --- a/libguile/scmsigs.c +++ b/libguile/scmsigs.c @@ -340,7 +340,10 @@ SCM_DEFINE (scm_sigaction_for_thread, "sigaction", 1, 3, 0, install_handler (csig, SCM_BOOL_F, SCM_BOOL_F); } else - SCM_OUT_OF_RANGE (2, handler); + { + SCM_CRITICAL_SECTION_END; + SCM_OUT_OF_RANGE (2, handler); + } } else if (scm_is_false (handler)) { |