fix more comptime var leaks

This commit is contained in:
Mitchell Hashimoto
2024-03-27 21:27:47 -07:00
parent 5845281e30
commit 026484fea6
3 changed files with 13 additions and 5 deletions

View File

@ -91,7 +91,8 @@ pub const Property = enum {
var name: [replaced.len:0]u8 = undefined; var name: [replaced.len:0]u8 = undefined;
@memcpy(&name, replaced); @memcpy(&name, replaced);
name[replaced.len] = 0; name[replaced.len] = 0;
break :name &name; const final = name;
break :name &final;
}; };
} }
} }

View File

@ -22,7 +22,9 @@ pub const entries: []const Entry = entries: {
.modifier = raw[3], .modifier = raw[3],
}; };
} }
break :entries &result;
const final = result;
break :entries &final;
}; };
/// Raw entry is the tuple form of an entry for easy human management. /// Raw entry is the tuple form of an entry for easy human management.

View File

@ -88,7 +88,8 @@ pub fn xtgettcapMap(comptime self: Source) type {
.numeric => |v| numeric: { .numeric => |v| numeric: {
var buf: [10]u8 = undefined; var buf: [10]u8 = undefined;
const num_len = std.fmt.formatIntBuf(&buf, v, 10, .upper, .{}); const num_len = std.fmt.formatIntBuf(&buf, v, 10, .upper, .{});
break :numeric buf[0..num_len]; const final = buf;
break :numeric final[0..num_len];
}, },
} }; } };
} }
@ -100,7 +101,7 @@ pub fn xtgettcapMap(comptime self: Source) type {
// The value is more complex // The value is more complex
var buf: [5 + entry[0].len + 1 + (entry[1].len * 2) + 2]u8 = undefined; var buf: [5 + entry[0].len + 1 + (entry[1].len * 2) + 2]u8 = undefined;
entry[1] = if (std.mem.eql(u8, entry[1], "")) std.fmt.bufPrint( const out = if (std.mem.eql(u8, entry[1], "")) std.fmt.bufPrint(
&buf, &buf,
"\x1bP1+r{s}\x1b\\", "\x1bP1+r{s}\x1b\\",
.{entry[0]}, // important: hex-encoded name .{entry[0]}, // important: hex-encoded name
@ -109,9 +110,13 @@ pub fn xtgettcapMap(comptime self: Source) type {
"\x1bP1+r{s}={s}\x1b\\", "\x1bP1+r{s}={s}\x1b\\",
.{ entry[0], hexencode(entry[1]) }, // important: hex-encoded name .{ entry[0], hexencode(entry[1]) }, // important: hex-encoded name
) catch unreachable; ) catch unreachable;
const final = buf;
entry[1] = final[0..out.len];
} }
return std.ComptimeStringMap([]const u8, kvs); const kvs_final = kvs;
return std.ComptimeStringMap([]const u8, &kvs_final);
} }
fn hexencode(comptime input: []const u8) []const u8 { fn hexencode(comptime input: []const u8) []const u8 {