diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig index c74850ca0a..b459c4e408 100644 --- a/lib/std/Io/Threaded.zig +++ b/lib/std/Io/Threaded.zig @@ -10083,10 +10083,12 @@ fn sleepPosix(timeout: Io.Timeout) Io.SleepError!void { var timespec: posix.timespec = timestampToPosix(deadline_nanoseconds); const syscall: Syscall = try .start(); while (true) { - switch (posix.errno(posix.system.clock_nanosleep(clock_id, .{ .ABSTIME = switch (timeout) { + const rc = posix.system.clock_nanosleep(clock_id, .{ .ABSTIME = switch (timeout) { .none, .duration => false, .deadline => true, - } }, ×pec, ×pec))) { + } }, ×pec, ×pec); + // POSIX-standard libc clock_nanosleep() returns *positive* errno values directly + switch (if (builtin.link_libc) @as(posix.E, @enumFromInt(rc)) else posix.errno(rc)) { .SUCCESS => { syscall.finish(); return;