authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2024-04-14 20:11:05 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2024-04-14 20:11:05 -07:00
log893469417a30a2f4dae17c277c8b6a2fadf7f094
treee070f8a8585ef338db679d28fea9134bf3b730f8
parent8d19e0ac576b14b1ae3096c301aaaf65b0ad881d

fix crash that can occur when calling parseEnv before parse


1 files changed, 9 insertions(+), 10 deletions(-)

src/lib.zig+9-10
......@@ -73,23 +73,22 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator {
7373pub fn parseEnv() !void {
7474 const alloc = singles.allocator;
7575
76 for (singles.keys()) |jtem| {
77 const u = try fixNameForEnv(alloc, jtem);
76 for (singles.keys(), singles.values()) |k, *v| {
77 const u = try fixNameForEnv(alloc, k);
7878 defer alloc.free(u);
7979 if (std.os.getenv(u)) |value| {
80 try singles.put(jtem, value);
80 v.* = value;
8181 }
8282 }
83 for (multis.keys()) |jtem| {
84 const e = multis.getEntry(jtem).?;
83 for (multis.keys(), multis.values()) |k, *v| {
8584 var n: usize = 1;
8685 while (true) : (n += 1) {
87 const u = try fixNameForEnv(alloc, e.key_ptr.*);
86 const u = try fixNameForEnv(alloc, k);
8887 defer alloc.free(u);
89 const k = try std.fmt.allocPrint(alloc, "{s}_{d}", .{ u, n });
90 defer alloc.free(k);
91 if (std.os.getenv(k)) |value| {
92 try e.value_ptr.append(value);
88 const w = try std.fmt.allocPrint(alloc, "{s}_{d}", .{ u, n });
89 defer alloc.free(w);
90 if (std.os.getenv(w)) |value| {
91 try v.append(value);
9392 continue;
9493 }
9594 break;