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