From 0e2fd035e2fe648bb93084e136c13701cb9ffacd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Tue, 17 Jun 1997 04:23:14 -0700
Subject: [PATCH] linux signal conflict fixed

Rev: src/ChangeLog:1.107
Rev: src/signal_handler.c:1.13
---
 src/ChangeLog        |  5 +++++
 src/signal_handler.c | 18 ++++++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 7324e193ec..930a9c0ccc 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jun 17 04:20:20 1997  Fredrik Hubinette  <hubbe@cytocin.hubbe.net>
+
+	* SIGUSR1 and SIGUSR2 are now masked out on linux systems
+	  with threads. (Because the thread functions use them.)
+
 Tue Jun 10 12:21:07 1997  Henrik Grubbstr�m  <grubba@infovav.se>
 
 	* lib/modules/Process.pmod (exec): Fixed path-handling bug.
diff --git a/src/signal_handler.c b/src/signal_handler.c
index ff8aba4236..2ff2103b9f 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -83,15 +83,19 @@ static struct sigdesc signal_desc []={
 #ifdef SIGKILL
   { SIGKILL, "SIGKILL" },
 #endif
+
+#if !defined(__linux__) || !defined(_REENTRANT)
 #ifdef SIGUSR1
   { SIGUSR1, "SIGUSR1" },
 #endif
-#ifdef SIGSEGV
-  { SIGSEGV, "SIGSEGV" },
-#endif
 #ifdef SIGUSR2
   { SIGUSR2, "SIGUSR2" },
 #endif
+#endif
+
+#ifdef SIGSEGV
+  { SIGSEGV, "SIGSEGV" },
+#endif
 #ifdef SIGPIPE
   { SIGPIPE, "SIGPIPE" },
 #endif
@@ -316,7 +320,13 @@ static void f_signal(int args)
   }
 
   signum=sp[-args].u.integer;
-  if(signum <0 || signum >=MAX_SIGNALS)
+  if(signum <0 ||
+     signum >=MAX_SIGNALS
+#if defined(__linux__) && defined(_REENTRANT)
+     || signum == SIGUSR1
+     || signum == SIGUSR2
+#endif
+    )
   {
     error("Signal out of range.\n");
   }
-- 
GitLab