Windows: Fix stage1.zig's main failing to receive non-ASCII args

Closes #10506
This commit is contained in:
Ryan Liptak
2022-10-11 00:45:23 -07:00
committed by Andrew Kelley
parent 1f196b9e2f
commit bec40a89c2

View File

@@ -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 {