diff --git a/src/lpc_signal.c b/src/lpc_signal.c index cc9108068a1f320d1de07b170e1b3b60994dd2d1..97d7234a376084e3a55cb6a3d7f8f474204a6246 100644 --- a/src/lpc_signal.c +++ b/src/lpc_signal.c @@ -10,6 +10,7 @@ #include "add_efun.h" #include "macros.h" #include "backend.h" +#include "error.h" #include <signal.h> #include <sys/wait.h> @@ -228,9 +229,13 @@ static RETSIGTYPE receive_signal(int signum) #endif } +static int signalling=0; + +static void unset_signalling(void *notused) { signalling=0; } + void check_signals() { - static int signalling=0; + ONERROR ebuf; #ifdef DEBUG extern int d_flag; if(d_flag>5) do_debug(0); @@ -241,6 +246,8 @@ void check_signals() int tmp=firstsig; signalling=1; + SET_ONERROR(ebuf,unset_signalling,0); + while(lastsig != tmp) { if(++lastsig == SIGNAL_BUFFER) lastsig=0; @@ -250,6 +257,8 @@ void check_signals() pop_stack(); } + UNSET_ONERROR(ebuf); + signalling=0; } }