From f6773232ac738ff16c5e3572e3678019ba2a4b88 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sat, 20 Apr 2024 13:11:15 +0200 Subject: [PATCH] Fix WASI threads, again Properly call the entrypoint when it doesn't return an optional error, and use the per-thread copy of the arguments list. --- lib/std/Thread.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig index d1c8a24f0a..503f646dc4 100644 --- a/lib/std/Thread.zig +++ b/lib/std/Thread.zig @@ -844,19 +844,19 @@ const WasiThreadImpl = struct { const bad_fn_ret = "expected return type of startFn to be 'u8', 'noreturn', 'void', or '!void'"; switch (@typeInfo(@typeInfo(@TypeOf(f)).Fn.return_type.?)) { .NoReturn, .Void => { - @call(.auto, w, args); + @call(.auto, f, w.args); }, .Int => |info| { if (info.bits != 8) { @compileError(bad_fn_ret); } - _ = @call(.auto, w, args); // WASI threads don't support exit status, ignore value + _ = @call(.auto, f, w.args); // WASI threads don't support exit status, ignore value }, .ErrorUnion => |info| { if (info.payload != void) { @compileError(bad_fn_ret); } - @call(.auto, f, args) catch |err| { + @call(.auto, f, w.args) catch |err| { std.debug.print("error: {s}\n", .{@errorName(err)}); if (@errorReturnTrace()) |trace| { std.debug.dumpStackTrace(trace.*);