diff --git a/src/main.zig b/src/main.zig index be1b672..7d6cc00 100644 --- a/src/main.zig +++ b/src/main.zig @@ -222,9 +222,9 @@ pub fn doRepl(allocator: *std.mem.Allocator, args_it: var) !void { // taking address is fine, because runqs_cmd lives in the lifetime // of this function. - try cmds_parsed.append(&runqs_cmd.base); + try cmds.append(&runqs_cmd.base); - try runner_clone.runCommands(cmds_parsed, true); + try runner_clone.runCommands(cmds, true); _ = try stdout.write("\n"); } } diff --git a/src/runner.zig b/src/runner.zig index a089a67..234e59e 100644 --- a/src/runner.zig +++ b/src/runner.zig @@ -24,15 +24,12 @@ pub const Runner = struct { image: ?*Image = null, /// If the runner is in REPL mode - repl: bool, - - args: [][]u8, + repl: bool = false, pub fn init(allocator: *std.mem.Allocator, repl: bool) Runner { return Runner{ .allocator = allocator, .repl = repl, - .args = std.process.argsAlloc(allocator) catch unreachable, }; } @@ -44,12 +41,7 @@ pub const Runner = struct { pub fn clone(self: *Runner) !Runner { var cloned_image = if (self.image) |image| try image.clone() else null; - return Runner{ - .allocator = self.allocator, - .image = cloned_image, - .repl = self.repl, - .args = self.args, - }; + return Runner{ .allocator = self.allocator, .image = cloned_image }; } fn resolveArg(self: *Runner, load_path: []const u8) ![]const u8 { @@ -65,12 +57,14 @@ pub const Runner = struct { // ':0' should ALWAYS point to the image. if (self.repl) index += 3 else index += 2; - std.debug.warn("ARGS!! {} \n", .{self.args.len}); - for (self.args) |arg, idx| { + var args = try std.process.argsAlloc(self.allocator); + defer std.process.argsFree(self.allocator, args); + std.debug.warn("ARGS!! {} \n", .{args.len}); + for (args) |arg, idx| { std.debug.warn("arg{} = {}\n", .{ idx, arg }); } - std.debug.warn("fetch arg idx={}, val={}\n", .{ index, self.args[index] }); - return self.args[index]; + std.debug.warn("fetch arg idx={}, val={}\n", .{ index, args[index] }); + return args[index]; } else { return load_path; }