commit ef55dcae675dd2048e5e404eb8bb6833d153f653 (tree)
parent bbc1c075382b3fa9f275fac097267b7c61b5a899
Author: Andrew Kelley <andrew@ziglang.org>
Date: Mon, 27 Oct 2025 14:57:01 -0700
start: fix logic for signal hanlding when SIG.POLL does not exist
fixes a compilation failure on FreeBSD
Diffstat:
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/lib/std/start.zig b/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 {}