authorgravatar for hi@whatisaph.onewhatisaphone <hi@whatisaph.one> 2026-08-18 20:15:35-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-08-20 21:53:39+02:00
log9f048108e2774be1fc41c9316273c92780c2c730
tree570fca8fabcbd8da05a5409d8f651fd7cb55fa11
parent6e66f7f2b80b0c12b1a2fc1203bc780dbf89294c

Give pollfd.revents a default value

The poll syscall only writes this field, never reads it

6 files changed, 5 insertions(+), 14 deletions(-)

lib/compiler/Maker/Watch.zig-1
...@@ -233,7 +233,6 @@ const Os = switch (builtin.os.tag) {...@@ -233,7 +233,6 @@ const Os = switch (builtin.os.tag) {
233 fd_gop.value_ptr.* = .{233 fd_gop.value_ptr.* = .{
234 .fd = fan_fd,234 .fd = fan_fd,
235 .events = std.posix.POLL.IN,235 .events = std.posix.POLL.IN,
236 .revents = undefined,
237 };236 };
238 }237 }
239 break :blk fd_gop.value_ptr.*.fd;238 break :blk fd_gop.value_ptr.*.fd;
lib/std/Io/Threaded.zig-8
...@@ -2618,7 +2618,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {...@@ -2618,7 +2618,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {
2618 poll_buffer[poll_len] = .{2618 poll_buffer[poll_len] = .{
2619 .fd = o.file.handle,2619 .fd = o.file.handle,
2620 .events = posix.POLL.IN | posix.POLL.ERR,2620 .events = posix.POLL.IN | posix.POLL.ERR,
2621 .revents = 0,
2622 };2621 };
2623 poll_len += 1;2622 poll_len += 1;
2624 },2623 },
...@@ -2626,7 +2625,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {...@@ -2626,7 +2625,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {
2626 poll_buffer[poll_len] = .{2625 poll_buffer[poll_len] = .{
2627 .fd = o.file.handle,2626 .fd = o.file.handle,
2628 .events = posix.POLL.OUT | posix.POLL.ERR,2627 .events = posix.POLL.OUT | posix.POLL.ERR,
2629 .revents = 0,
2630 };2628 };
2631 poll_len += 1;2629 poll_len += 1;
2632 },2630 },
...@@ -2634,7 +2632,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {...@@ -2634,7 +2632,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {
2634 poll_buffer[poll_len] = .{2632 poll_buffer[poll_len] = .{
2635 .fd = o.file.handle,2633 .fd = o.file.handle,
2636 .events = posix.POLL.OUT | posix.POLL.IN | posix.POLL.ERR,2634 .events = posix.POLL.OUT | posix.POLL.IN | posix.POLL.ERR,
2637 .revents = 0,
2638 };2635 };
2639 poll_len += 1;2636 poll_len += 1;
2640 },2637 },
...@@ -2642,7 +2639,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {...@@ -2642,7 +2639,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {
2642 poll_buffer[poll_len] = .{2639 poll_buffer[poll_len] = .{
2643 .fd = o.socket_handle,2640 .fd = o.socket_handle,
2644 .events = posix.POLL.IN | posix.POLL.ERR,2641 .events = posix.POLL.IN | posix.POLL.ERR,
2645 .revents = 0,
2646 };2642 };
2647 poll_len += 1;2643 poll_len += 1;
2648 },2644 },
...@@ -2650,7 +2646,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {...@@ -2650,7 +2646,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {
2650 poll_buffer[poll_len] = .{2646 poll_buffer[poll_len] = .{
2651 .fd = o.socket_handle,2647 .fd = o.socket_handle,
2652 .events = posix.POLL.OUT | posix.POLL.ERR,2648 .events = posix.POLL.OUT | posix.POLL.ERR,
2653 .revents = 0,
2654 };2649 };
2655 poll_len += 1;2650 poll_len += 1;
2656 },2651 },
...@@ -2658,7 +2653,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {...@@ -2658,7 +2653,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {
2658 poll_buffer[poll_len] = .{2653 poll_buffer[poll_len] = .{
2659 .fd = o.socket_handle,2654 .fd = o.socket_handle,
2660 .events = posix.POLL.IN | posix.POLL.ERR,2655 .events = posix.POLL.IN | posix.POLL.ERR,
2661 .revents = 0,
2662 };2656 };
2663 poll_len += 1;2657 poll_len += 1;
2664 },2658 },
...@@ -2666,7 +2660,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {...@@ -2666,7 +2660,6 @@ fn batchAwaitAsync(userdata: ?*anyopaque, b: *Io.Batch) Io.Cancelable!void {
2666 poll_buffer[poll_len] = .{2660 poll_buffer[poll_len] = .{
2667 .fd = o.socket_handle,2661 .fd = o.socket_handle,
2668 .events = posix.POLL.OUT | posix.POLL.ERR,2662 .events = posix.POLL.OUT | posix.POLL.ERR,
2669 .revents = 0,
2670 };2663 };
2671 poll_len += 1;2664 poll_len += 1;
2672 },2665 },
...@@ -2811,7 +2804,6 @@ fn batchAwaitConcurrent(userdata: ?*anyopaque, b: *Io.Batch, timeout: Io.Timeout...@@ -2811,7 +2804,6 @@ fn batchAwaitConcurrent(userdata: ?*anyopaque, b: *Io.Batch, timeout: Io.Timeout
2811 storage.slice[len] = .{2804 storage.slice[len] = .{
2812 .fd = fd,2805 .fd = fd,
2813 .events = events,2806 .events = events,
2814 .revents = 0,
2815 };2807 };
2816 storage.len = len + 1;2808 storage.len = len + 1;
2817 }2809 }
lib/std/c.zig+2-2
...@@ -4303,12 +4303,12 @@ pub const pollfd = switch (native_os) {...@@ -4303,12 +4303,12 @@ pub const pollfd = switch (native_os) {
4303 .serenity => extern struct {4303 .serenity => extern struct {
4304 fd: fd_t,4304 fd: fd_t,
4305 events: c_short,4305 events: c_short,
4306 revents: c_short,4306 revents: c_short = undefined,
4307 },4307 },
4308 else => extern struct {4308 else => extern struct {
4309 fd: fd_t,4309 fd: fd_t,
4310 events: i16,4310 events: i16,
4311 revents: i16,4311 revents: i16 = undefined,
4312 },4312 },
4313};4313};
4314pub const rlim_t = switch (native_os) {4314pub const rlim_t = switch (native_os) {
lib/std/os/emscripten.zig+1-1
...@@ -741,7 +741,7 @@ pub const nfds_t = usize;...@@ -741,7 +741,7 @@ pub const nfds_t = usize;
741pub const pollfd = extern struct {741pub const pollfd = extern struct {
742 fd: fd_t,742 fd: fd_t,
743 events: i16,743 events: i16,
744 revents: i16,744 revents: i16 = undefined,
745};745};
746746
747pub const stack_t = extern struct {747pub const stack_t = extern struct {
lib/std/os/linux.zig+1-1
...@@ -8108,7 +8108,7 @@ pub const nfds_t = usize;...@@ -8108,7 +8108,7 @@ pub const nfds_t = usize;
8108pub const pollfd = extern struct {8108pub const pollfd = extern struct {
8109 fd: fd_t,8109 fd: fd_t,
8110 events: i16,8110 events: i16,
8111 revents: i16,8111 revents: i16 = undefined,
8112};8112};
81138113
8114pub const POLL = struct {8114pub const POLL = struct {
lib/std/os/linux/test.zig+1-1
...@@ -423,7 +423,7 @@ test "timerfd" {...@@ -423,7 +423,7 @@ test "timerfd" {
423 else => @panic("test failed"),423 else => @panic("test failed"),
424 }424 }
425425
426 var fds: [1]std.posix.pollfd = .{.{ .fd = tfd, .events = linux.POLL.IN, .revents = 0 }};426 var fds: [1]std.posix.pollfd = .{.{ .fd = tfd, .events = linux.POLL.IN }};
427 try expectEqual(@as(usize, 1), try std.posix.poll(&fds, -1)); // -1 => infinite waiting427 try expectEqual(@as(usize, 1), try std.posix.poll(&fds, -1)); // -1 => infinite waiting
428428
429 const git = rc: {429 const git = rc: {