From bec40a89c21009ea7f2c41362cc13d27f065b43e Mon Sep 17 00:00:00 2001 From: Ryan Liptak Date: Tue, 11 Oct 2022 00:45:23 -0700 Subject: [PATCH] Windows: Fix stage1.zig's main failing to receive non-ASCII args Closes #10506 --- src/stage1.zig | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/stage1.zig b/src/stage1.zig index e3f0daaa44..f4c9cbf8a1 100644 --- a/src/stage1.zig +++ b/src/stage1.zig @@ -40,10 +40,18 @@ pub fn main(argc: c_int, argv: [*][*:0]u8) callconv(.C) c_int { defer arena_instance.deinit(); const arena = arena_instance.allocator(); - const args = arena.alloc([]const u8, @intCast(usize, argc)) catch fatal("{s}", .{"OutOfMemory"}); - for (args) |*arg, i| { - arg.* = mem.sliceTo(argv[i], 0); - } + const args: []const []const u8 = args: { + if (builtin.os.tag == .windows) { + break :args std.process.argsAlloc(arena) catch fatal("{s}", .{"OutOfMemory"}); + } else { + const args = arena.alloc([]const u8, @intCast(usize, argc)) catch fatal("{s}", .{"OutOfMemory"}); + for (args) |*arg, i| { + arg.* = mem.sliceTo(argv[i], 0); + } + break :args args; + } + }; + if (builtin.mode == .Debug) { stage2.mainArgs(gpa, arena, args) catch unreachable; } else {