zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 6dbfba526f7b7cf1256c133d025b11409c97dda7 (tree)
parent 04071d64bb83c0600d445a2f4b2541e68a6021bf
Author: Brandon Black <bblack@wikimedia.org>
Date:   Fri, 12 Sep 2025 07:20:08 -0500

linux: Doc and check retval for no-fail pid calls

The switch from @bitCast() to @intCast() here safety-checks
Linux's assertion that these 3 calls never return errors (negative
values as pid_t).  getppid() can legally return 0 if the parent is
in a different pid namespace, but this is not an error.

Diffstat:
Mlib/std/os/linux.zig | 9++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig @@ -1839,15 +1839,18 @@ pub fn setsid() usize { } pub fn getpid() pid_t { - return @bitCast(@as(u32, @truncate(syscall0(.getpid)))); + // Casts result to a pid_t, safety-checking >= 0, because getpid() cannot fail + return @intCast(@as(u32, @truncate(syscall0(.getpid)))); } pub fn getppid() pid_t { - return @bitCast(@as(u32, @truncate(syscall0(.getppid)))); + // Casts result to a pid_t, safety-checking >= 0, because getppid() cannot fail + return @intCast(@as(u32, @truncate(syscall0(.getppid)))); } pub fn gettid() pid_t { - return @bitCast(@as(u32, @truncate(syscall0(.gettid)))); + // Casts result to a pid_t, safety-checking >= 0, because gettid() cannot fail + return @intCast(@as(u32, @truncate(syscall0(.gettid)))); } pub fn sigprocmask(flags: u32, noalias set: ?*const sigset_t, noalias oldset: ?*sigset_t) usize {