From 9f048108e2774be1fc41c9316273c92780c2c730 Mon Sep 17 00:00:00 2001 From: whatisaphone Date: Tue, 18 Aug 2026 20:15:35 -0400 Subject: [PATCH] Give pollfd.revents a default value The poll syscall only writes this field, never reads it --- lib/compiler/Maker/Watch.zig | 1 - lib/std/Io/Threaded.zig | 8 -------- lib/std/c.zig | 4 ++-- lib/std/os/emscripten.zig | 2 +- lib/std/os/linux.zig | 2 +- lib/std/os/linux/test.zig | 2 +- 6 files changed, 5 insertions(+), 14 deletions(-) diff --git a/lib/compiler/Maker/Watch.zig b/lib/compiler/Maker/Watch.zig index ba0f260afcf0a3db57eddca9cd59caf2e48de311..fe44e9c2055ba839e57128dd8ff668fa5ad5d72d 100644 --- a/lib/compiler/Maker/Watch.zig +++ b/lib/compiler/Maker/Watch.zig @@ -233,7 +233,6 @@ const Os = switch (builtin.os.tag) { fd_gop.value_ptr.* = .{ .fd = fan_fd, .events = std.posix.POLL.IN, - .revents = undefined, }; } break :blk fd_gop.value_ptr.*.fd; diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig index b737fa5e0993d9dbe4e0e0a4f20fdd2ddd5112f8..b3610de85dae5f42f39eaafb309c9e4145673daa 100644 --- a/lib/std/Io/Threaded.zig +++ b/lib/std/Io/Threaded.zig @@ -2618,7 +2618,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void { poll_buffer[poll_len] = .{ .fd = o.file.handle, .events = posix.POLL.IN | posix.POLL.ERR, - .revents = 0, }; poll_len += 1; }, @@ -2626,7 +2625,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void { poll_buffer[poll_len] = .{ .fd = o.file.handle, .events = posix.POLL.OUT | posix.POLL.ERR, - .revents = 0, }; poll_len += 1; }, @@ -2634,7 +2632,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void { poll_buffer[poll_len] = .{ .fd = o.file.handle, .events = posix.POLL.OUT | posix.POLL.IN | posix.POLL.ERR, - .revents = 0, }; poll_len += 1; }, @@ -2642,7 +2639,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void { poll_buffer[poll_len] = .{ .fd = o.socket_handle, .events = posix.POLL.IN | posix.POLL.ERR, - .revents = 0, }; poll_len += 1; }, @@ -2650,7 +2646,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void { poll_buffer[poll_len] = .{ .fd = o.socket_handle, .events = posix.POLL.OUT | posix.POLL.ERR, - .revents = 0, }; poll_len += 1; }, @@ -2658,7 +2653,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void { poll_buffer[poll_len] = .{ .fd = o.socket_handle, .events = posix.POLL.IN | posix.POLL.ERR, - .revents = 0, }; poll_len += 1; }, @@ -2666,7 +2660,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void { poll_buffer[poll_len] = .{ .fd = o.socket_handle, .events = posix.POLL.OUT | posix.POLL.ERR, - .revents = 0, }; poll_len += 1; }, @@ -2811,7 +2804,6 @@ fn batchAwaitConcurrent(userdata: ?*anyopaque, b: *Io.Batch, timeout: Io.Timeout storage.slice[len] = .{ .fd = fd, .events = events, - .revents = 0, }; storage.len = len + 1; } diff --git a/lib/std/c.zig b/lib/std/c.zig index 8e2d5a209d5f01a533a910f3919374186d67e15e..262244ecf34dc81ee70552b0a24a7f0e432d9244 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -4303,12 +4303,12 @@ pub const pollfd = switch (native_os) { .serenity => extern struct { fd: fd_t, events: c_short, - revents: c_short, + revents: c_short = undefined, }, else => extern struct { fd: fd_t, events: i16, - revents: i16, + revents: i16 = undefined, }, }; pub const rlim_t = switch (native_os) { diff --git a/lib/std/os/emscripten.zig b/lib/std/os/emscripten.zig index da0c85d1b05a5758a52aeae315446e91fc982477..808e84ac00c85057d1721daf4d4c4fb7b28ec452 100644 --- a/lib/std/os/emscripten.zig +++ b/lib/std/os/emscripten.zig @@ -741,7 +741,7 @@ pub const nfds_t = usize; pub const pollfd = extern struct { fd: fd_t, events: i16, - revents: i16, + revents: i16 = undefined, }; pub const stack_t = extern struct { diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 436b3a0ee4f333ffab3c65dcdff3ecabd7043d24..c86321bd53548898c1042b94af31933ede4be270 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -8108,7 +8108,7 @@ pub const nfds_t = usize; pub const pollfd = extern struct { fd: fd_t, events: i16, - revents: i16, + revents: i16 = undefined, }; pub const POLL = struct { diff --git a/lib/std/os/linux/test.zig b/lib/std/os/linux/test.zig index 76e60d108878fd94aa1795c316009d022cf51d08..56c7c96c9432055945b71bca80de990d58df497d 100644 --- a/lib/std/os/linux/test.zig +++ b/lib/std/os/linux/test.zig @@ -423,7 +423,7 @@ test "timerfd" { else => @panic("test failed"), } - var fds: [1]std.posix.pollfd = .{.{ .fd = tfd, .events = linux.POLL.IN, .revents = 0 }}; + var fds: [1]std.posix.pollfd = .{.{ .fd = tfd, .events = linux.POLL.IN }}; try expectEqual(@as(usize, 1), try std.posix.poll(&fds, -1)); // -1 => infinite waiting const git = rc: { -- 2.54.0