From 83f1f03ed55bf51e3617610b5f70a06192c82e84 Mon Sep 17 00:00:00 2001
From: wlott <wlott>
Date: Fri, 27 Sep 1991 10:32:30 +0000
Subject: [PATCH] Don't assume signal handlers are (void *)(), 'cause under
 mach they are (int *)().

---
 ldb/interrupt.c | 12 ++++++------
 ldb/interrupt.h | 13 ++++++++++---
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/ldb/interrupt.c b/ldb/interrupt.c
index f56b84181..c7e2d8c32 100644
--- a/ldb/interrupt.c
+++ b/ldb/interrupt.c
@@ -1,4 +1,4 @@
-/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/interrupt.c,v 1.28 1991/05/24 17:50:13 wlott Exp $ */
+/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/interrupt.c,v 1.29 1991/09/27 10:31:55 wlott Exp $ */
 
 /* Interrupt handing magic. */
 
@@ -26,7 +26,7 @@ boolean internal_errors_enabled = 0;
 struct sigcontext *lisp_interrupt_contexts[MAX_INTERRUPTS];
 
 union interrupt_handler interrupt_handlers[NSIG];
-void (*interrupt_low_level_handlers[NSIG])() = {0};
+SIGHDLRTYPE (*interrupt_low_level_handlers[NSIG])() = {0};
 
 static int pending_signal = 0, pending_code = 0, pending_mask = 0;
 static boolean maybe_gc_pending = FALSE;
@@ -195,7 +195,7 @@ void interrupt_handle_pending(context)
 *    the two main signal handlers.                               *
 \****************************************************************/
 
-void interrupt_handle_now(signal, code, context)
+SIGHDLRTYPE interrupt_handle_now(signal, code, context)
 int signal, code;
 struct sigcontext *context;
 {
@@ -244,7 +244,7 @@ struct sigcontext *context;
         undo_fake_foreign_function_call(context);
 }
 
-static void maybe_now_maybe_later(signal, code, context)
+static SIGHDLRTYPE maybe_now_maybe_later(signal, code, context)
 int signal, code;
 struct sigcontext *context;
 {
@@ -336,7 +336,7 @@ struct sigcontext *context;
 
 void interrupt_install_low_level_handler(signal,handler)
 int signal;
-void (*handler)();
+SIGHDLRTYPE (*handler)();
 {
     struct sigvec sv;
 
@@ -351,7 +351,7 @@ void (*handler)();
 
 unsigned long install_handler(signal, handler)
 int signal;
-void (*handler)();
+SIGHDLRTYPE (*handler)();
 {
     struct sigvec sv;
     int oldmask;
diff --git a/ldb/interrupt.h b/ldb/interrupt.h
index 18731c3cf..2e62292de 100644
--- a/ldb/interrupt.h
+++ b/ldb/interrupt.h
@@ -1,4 +1,4 @@
-/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/interrupt.h,v 1.2 1991/05/24 17:50:52 wlott Exp $ */
+/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/interrupt.h,v 1.3 1991/09/27 10:32:30 wlott Exp $ */
 
 #if !defined(_INCLUDE_INTERRUPT_H_)
 #define _INCLUDE_INTERRUPT_H_
@@ -9,12 +9,19 @@
 
 extern struct sigcontext *lisp_interrupt_contexts[MAX_INTERRUPTS];
 
+#ifdef SUNOS
+#define SIGHDLRTYPE void
+#else
+#define SIGHDLRTYPE int
+#endif
+
 union interrupt_handler {
 	lispobj lisp;
-	void (*c)();
+	SIGHDLRTYPE (*c)();
 };
 
-extern void interrupt_handle_now(), interrupt_handle_pending();
+extern SIGHDLRTYPE interrupt_handle_now();
+extern void interrupt_handle_pending();
 extern void interrupt_internal_error();
 
 extern union interrupt_handler interrupt_handlers[NSIG];
-- 
GitLab