authorgravatar for 70640214+cflicker@users.noreply.github.comChristian Flicker <70640214+cflicker@users.noreply.github.com> 2024-01-29 17:07:21+01:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-01-29 11:07:21-05:00
log9c7fa358c11bbb49f2e624cf81c5003e39fbcd92
treeb11ac5c7b32aaba673dbe695e5956d9b592f01ab
parent7b4561170a202c9929f5e61517f1bedaa0b60db6
signaturebadge-check Signed by PGP key B5690EEEBB952194

std.Thread: fix off-by-one in PosixThreadImpl (#18711)

by removing ZST special case

1 files changed, 1 insertions(+), 6 deletions(-)

lib/std/Thread.zig+1-6
...@@ -674,11 +674,6 @@ const PosixThreadImpl = struct {...@@ -674,11 +674,6 @@ const PosixThreadImpl = struct {
674674
675 const Instance = struct {675 const Instance = struct {
676 fn entryFn(raw_arg: ?*anyopaque) callconv(.C) ?*anyopaque {676 fn entryFn(raw_arg: ?*anyopaque) callconv(.C) ?*anyopaque {
677 // @alignCast() below doesn't support zero-sized-types (ZST)
678 if (@sizeOf(Args) < 1) {
679 return callFn(f, @as(Args, undefined));
680 }
681
682 const args_ptr: *Args = @ptrCast(@alignCast(raw_arg));677 const args_ptr: *Args = @ptrCast(@alignCast(raw_arg));
683 defer allocator.destroy(args_ptr);678 defer allocator.destroy(args_ptr);
684 return callFn(f, args_ptr.*);679 return callFn(f, args_ptr.*);
...@@ -703,7 +698,7 @@ const PosixThreadImpl = struct {...@@ -703,7 +698,7 @@ const PosixThreadImpl = struct {
703 &handle,698 &handle,
704 &attr,699 &attr,
705 Instance.entryFn,700 Instance.entryFn,
706 if (@sizeOf(Args) > 1) @as(*anyopaque, @ptrCast(args_ptr)) else undefined,701 @ptrCast(args_ptr),
707 )) {702 )) {
708 .SUCCESS => return Impl{ .handle = handle },703 .SUCCESS => return Impl{ .handle = handle },
709 .AGAIN => return error.SystemResources,704 .AGAIN => return error.SystemResources,