diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index d7d29e0df1a6..a62655d577ee 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -1834,20 +1834,23 @@ pub fn setgroups(size: usize, list: [*]const gid_t) usize { } } -pub fn setsid() pid_t { - return @bitCast(@as(u32, @truncate(syscall0(.setsid)))); +pub fn setsid() usize { + return syscall0(.setsid); } 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 { diff --git a/lib/std/posix.zig b/lib/std/posix.zig index e0fd68db2446..77a61b4bf4a0 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -7000,7 +7000,7 @@ pub const SetSidError = error{ pub fn setsid() SetSidError!pid_t { const rc = system.setsid(); switch (errno(rc)) { - .SUCCESS => return rc, + .SUCCESS => return @intCast(rc), .PERM => return error.PermissionDenied, else => |err| return unexpectedErrno(err), }