summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2011-04-25 16:44:54 +0200
committerLudovic Courtès <ludo@gnu.org>2011-04-25 16:45:22 +0200
commit912308835dd0d3af61976cf1a4c19b60cb348b68 (patch)
tree00070d326a578a435c2c16aacc6cb9128aa65dc7
parent96128014bfaabe9e123c4f4928ce4c20427eaa53 (diff)
downloadguile-912308835dd0d3af61976cf1a4c19b60cb348b68.tar.gz
Make `scm_i_ensure_signal_delivery_thread' call in Guile mode.
* libguile/threads.c (on_thread_exit): Move `scm_i_ensure_signal_delivery_thread' call... (do_thread_exit): ... here.
-rw-r--r--libguile/threads.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libguile/threads.c b/libguile/threads.c
index 66869e7c3..4de819395 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -613,6 +613,10 @@ do_thread_exit (void *v)
{
scm_i_thread *t = (scm_i_thread *) v;
+ /* Ensure the signal handling thread has been launched, because we might be
+ shutting it down. This needs to be done in Guile mode. */
+ scm_i_ensure_signal_delivery_thread ();
+
if (!scm_is_false (t->cleanup_handler))
{
SCM ptr = t->cleanup_handler;
@@ -687,10 +691,6 @@ on_thread_exit (void *v)
case but it doesn't hurt to be consistent. */
scm_i_pthread_setspecific (scm_i_thread_key, t);
- /* Ensure the signal handling thread has been launched, because we might be
- shutting it down. */
- scm_i_ensure_signal_delivery_thread ();
-
/* Scheme-level thread finalizers and other cleanup needs to happen in
guile mode. */
GC_call_with_stack_base (do_thread_exit_trampoline, t);