From 1175a3e992fc30361febf3517827a5d0ada49b5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 19 Sep 2026 10:43:34 +0200 Subject: [PATCH] std.os.linux: make errno() generic so that it can handle u32 and u64 correctly closes https://codeberg.org/ziglang/zig/issues/36883 --- lib/std/os/linux.zig | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index fd892a548f2074366d28b135d9c834f090849d66..be4e4fd069e736ca170cde09def4e0545f9e8e21 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -1039,10 +1039,9 @@ fn splitValue64(val: i64) [2]u32 { } /// Get the errno from a syscall return value. SUCCESS means no error. -pub fn errno(r: u64) E { - const signed_r: i32 = @bitCast(@as(u32, @truncate(r))); - const int = if (signed_r > -4096 and signed_r < 0) -signed_r else 0; - return @fromBackingInt(@intCast(int)); +pub fn errno(r: anytype) E { + const signed_r: @Int(.signed, @typeInfo(@TypeOf(r)).int.bits) = @bitCast(r); + return @fromBackingInt(@intCast(if (signed_r > -4096 and signed_r < 0) -signed_r else 0)); } pub fn brk(addr: usize) usize { -- 2.54.0