From 5a94794b73c8f9d042bc7928d071cc1004487983 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 20 Apr 2021 10:31:02 +0200 Subject: std: Fix thread creation with field-less context type Closes #8524 --- lib/std/Thread.zig | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'lib/std/Thread.zig') diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig index 7e8a6226e6..01405b104f 100644 --- a/lib/std/Thread.zig +++ b/lib/std/Thread.zig @@ -199,7 +199,8 @@ pub fn spawn(comptime startFn: anytype, context: SpawnContextType(@TypeOf(startF inner: Context, }; fn threadMain(raw_arg: windows.LPVOID) callconv(.C) windows.DWORD { - const arg = if (@sizeOf(Context) == 0) {} else @ptrCast(*Context, @alignCast(@alignOf(Context), raw_arg)).*; + const arg = if (@sizeOf(Context) == 0) undefined // + else @ptrCast(*Context, @alignCast(@alignOf(Context), raw_arg)).*; switch (@typeInfo(@typeInfo(@TypeOf(startFn)).Fn.return_type.?)) { .NoReturn => { @@ -260,7 +261,8 @@ pub fn spawn(comptime startFn: anytype, context: SpawnContextType(@TypeOf(startF const MainFuncs = struct { fn linuxThreadMain(ctx_addr: usize) callconv(.C) u8 { - const arg = if (@sizeOf(Context) == 0) {} else @intToPtr(*const Context, ctx_addr).*; + const arg = if (@sizeOf(Context) == 0) undefined // + else @intToPtr(*Context, ctx_addr).*; switch (@typeInfo(@typeInfo(@TypeOf(startFn)).Fn.return_type.?)) { .NoReturn => { @@ -292,7 +294,8 @@ pub fn spawn(comptime startFn: anytype, context: SpawnContextType(@TypeOf(startF } } fn posixThreadMain(ctx: ?*c_void) callconv(.C) ?*c_void { - const arg = if (@sizeOf(Context) == 0) {} else @ptrCast(*Context, @alignCast(@alignOf(Context), ctx)).*; + const arg = if (@sizeOf(Context) == 0) undefined // + else @ptrCast(*Context, @alignCast(@alignOf(Context), ctx)).*; switch (@typeInfo(@typeInfo(@TypeOf(startFn)).Fn.return_type.?)) { .NoReturn => { -- cgit v1.2.3