diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c index a50f74799..9b1c96d42 100644 --- a/libguile/scmsigs.c +++ b/libguile/scmsigs.c @@ -115,6 +115,12 @@ close_1 (SCM proc, SCM arg) } #if SCM_USE_PTHREAD_THREADS +/* On mingw there's no notion of inter-process signals, only a raise() + within the process itself which apparently invokes the registered handler + immediately. Not sure how well the following code will cope in this + case. It builds but it may not offer quite the same scheme-level + semantics as on a proper system. If you're relying on much in the way of + signal handling on mingw you probably lose anyway. */ static int signal_pipe[2]; @@ -158,12 +164,13 @@ read_without_guile (int fd, char *buf, size_t n) static SCM signal_delivery_thread (void *data) { - sigset_t all_sigs; int n, sig; char sigbyte; - +#if HAVE_PTHREAD_SIGMASK /* not on mingw, see notes above */ + sigset_t all_sigs; sigfillset (&all_sigs); scm_i_pthread_sigmask (SIG_SETMASK, &all_sigs, NULL); +#endif while (1) {