summaryrefslogtreecommitdiff
path: root/libguile/scmsigs.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/scmsigs.c')
-rw-r--r--libguile/scmsigs.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c
index 697cc7072..82522b57a 100644
--- a/libguile/scmsigs.c
+++ b/libguile/scmsigs.c
@@ -43,11 +43,11 @@
#include <full-write.h>
#include "async.h"
-#include "bdw-gc.h"
#include "boolean.h"
#include "dynwind.h"
#include "eval.h"
#include "feature.h"
+#include "gc-internal.h"
#include "gsubr.h"
#include "list.h"
#include "modules.h"
@@ -161,11 +161,8 @@ signal_delivery_thread (void *data)
#if HAVE_PTHREAD_SIGMASK /* not on mingw, see notes above */
sigset_t all_sigs;
sigfillset (&all_sigs);
- /* On libgc 7.1 and earlier, GC_do_blocking doesn't actually do
- anything. So in that case, libgc will want to suspend the signal
- delivery thread, so we need to allow it to do so by unmasking the
- suspend signal. */
- sigdelset (&all_sigs, GC_get_suspend_signal ());
+ if (gc_safepoint_mechanism() == GC_SAFEPOINT_MECHANISM_SIGNAL)
+ sigdelset (&all_sigs, gc_safepoint_signal_number());
scm_i_pthread_sigmask (SIG_SETMASK, &all_sigs, NULL);
#endif