Commit bec40a89c2
Changed files (1)
src
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 {