aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libmain/shared.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index f2aeec9e1..a6101342a 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -125,8 +125,14 @@ void initNix()
act.sa_handler = sigHandler;
if (sigaction(SIGUSR1, &act, 0)) throw SysError("handling SIGUSR1");
- /* Make sure SIGWINCH is handled as well. */
- if (sigaction(SIGWINCH, &act, 0)) throw SysError("handling SIGWINCH");
+#if __APPLE__
+ /* HACK: on darwin, we need can’t use sigprocmask with SIGWINCH.
+ * Instead, add a dummy sigaction handler, and signalHandlerThread
+ * can handle the rest. */
+ struct sigaction sa;
+ sa.sa_handler = sigHandler;
+ if (sigaction(SIGWINCH, &sa, 0)) throw SysError("handling SIGWINCH");
+#endif
/* Register a SIGSEGV handler to detect stack overflows. */
detectStackOverflow();