Commit bec40a89c2

Ryan Liptak <squeek502@hotmail.com>
2022-10-11 09:45:23
Windows: Fix stage1.zig's main failing to receive non-ASCII args
Closes #10506
1 parent 1f196b9
Changed files (1)
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 {