From 4ff9b80846a3895b044f9c03c8f3ebda06448050 Mon Sep 17 00:00:00 2001 From: Andreas Becker Date: Thu, 29 May 2014 11:30:09 +0200 Subject: [PATCH] Fix: Improve signal handling in threaded windows. --- C/sysbits.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/C/sysbits.c b/C/sysbits.c index 917f5bd5f..78b2b76f4 100755 --- a/C/sysbits.c +++ b/C/sysbits.c @@ -1657,15 +1657,23 @@ ReceiveSignal (int s, void *x, void *y) #if (_MSC_VER || defined(__MINGW32__)) static BOOL WINAPI MSCHandleSignal(DWORD dwCtrlType) { - CACHE_REGS +#if THREADS + if (REMOTE_InterruptsDisabled(0)) { +#else if (LOCAL_InterruptsDisabled) { +#endif return FALSE; } switch(dwCtrlType) { case CTRL_C_EVENT: case CTRL_BREAK_EVENT: +#if THREADS + Yap_external_signal(0, YAP_WINTIMER_SIGNAL); + REMOTE_PrologMode(0) |= InterruptMode; +#else Yap_signal(YAP_WINTIMER_SIGNAL); - LOCAL_PrologMode |= InterruptMode; + LOCAL_PrologMode |= InterruptMode; +#endif return(TRUE); default: return(FALSE);