From 0cea4230e9530c931072cda2ed1ca4e271e46109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Sun, 9 Jun 1996 16:50:54 +0200 Subject: [PATCH] recursive signal calling now fixed Rev: src/lpc_signal.c:1.11 --- src/lpc_signal.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lpc_signal.c b/src/lpc_signal.c index cc9108068a..97d7234a37 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; } } -- GitLab