Commit ef55dcae67

Andrew Kelley <andrew@ziglang.org>
2025-10-27 22:57:01
start: fix logic for signal hanlding when SIG.POLL does not exist
fixes a compilation failure on FreeBSD
1 parent bbc1c07
Changed files (1)
lib
lib/std/start.zig
@@ -784,9 +784,19 @@ fn maybeIgnoreSignals() void {
         .mask = posix.sigemptyset(),
         .flags = 0,
     };
-    if (!std.options.keep_sigpoll) posix.sigaction(posix.SIG.POLL, &act, null);
-    if (@hasField(posix.SIG, "IO") and posix.SIG.IO != posix.SIG.POLL and !std.options.keep_sigio) posix.sigaction(posix.SIG.IO, &act, null);
-    if (!std.options.keep_sigpipe) posix.sigaction(posix.SIG.PIPE, &act, null);
+
+    if (@hasField(posix.SIG, "POLL") and !std.options.keep_sigpoll)
+        posix.sigaction(posix.SIG.POLL, &act, null);
+
+    if (@hasField(posix.SIG, "IO") and
+        (!@hasField(posix.SIG, "POLL") or posix.SIG.IO != posix.SIG.POLL) and
+        !std.options.keep_sigio)
+    {
+        posix.sigaction(posix.SIG.IO, &act, null);
+    }
+
+    if (@hasField(posix.SIG, "PIPE") and !std.options.keep_sigpipe)
+        posix.sigaction(posix.SIG.PIPE, &act, null);
 }
 
 fn noopSigHandler(_: i32) callconv(.c) void {}