std: fix undefined value in Target.Query

This is an RLS footgun.

Resolves: #21834
This commit is contained in:
mlugg 2025-01-05 11:16:48 +00:00 committed by Matthew Lugg
parent 41786fabfc
commit da1ffae7d2

View File

@ -544,7 +544,7 @@ fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !
const version_text = it.rest(); const version_text = it.rest();
if (version_text.len > 0) switch (tag.versionRangeTag()) { if (version_text.len > 0) switch (tag.versionRangeTag()) {
.none => return error.InvalidOperatingSystemVersion, .none => return error.InvalidOperatingSystemVersion,
.semver, .hurd, .linux => range: { .semver, .hurd, .linux => {
var range_it = mem.splitSequence(u8, version_text, "..."); var range_it = mem.splitSequence(u8, version_text, "...");
result.os_version_min = .{ result.os_version_min = .{
.semver = parseVersion(range_it.first()) catch |err| switch (err) { .semver = parseVersion(range_it.first()) catch |err| switch (err) {
@ -552,21 +552,25 @@ fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !
error.InvalidVersion => return error.InvalidOperatingSystemVersion, error.InvalidVersion => return error.InvalidOperatingSystemVersion,
}, },
}; };
result.os_version_max = .{ if (range_it.next()) |v| {
.semver = parseVersion(range_it.next() orelse break :range) catch |err| switch (err) { result.os_version_max = .{
error.Overflow => return error.InvalidOperatingSystemVersion, .semver = parseVersion(v) catch |err| switch (err) {
error.InvalidVersion => return error.InvalidOperatingSystemVersion, error.Overflow => return error.InvalidOperatingSystemVersion,
}, error.InvalidVersion => return error.InvalidOperatingSystemVersion,
}; },
};
}
}, },
.windows => range: { .windows => {
var range_it = mem.splitSequence(u8, version_text, "..."); var range_it = mem.splitSequence(u8, version_text, "...");
result.os_version_min = .{ result.os_version_min = .{
.windows = try Target.Os.WindowsVersion.parse(range_it.first()), .windows = try Target.Os.WindowsVersion.parse(range_it.first()),
}; };
result.os_version_max = .{ if (range_it.next()) |v| {
.windows = try Target.Os.WindowsVersion.parse(range_it.next() orelse break :range), result.os_version_max = .{
}; .windows = try Target.Os.WindowsVersion.parse(v),
};
}
}, },
}; };
} }