authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-01-05 11:16:48+00:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-01-05 16:26:21+00:00
logda1ffae7d23b04c4efc5e99ba153d8c45eb980f3
treed5fc53a7440e920dc1314f5ebc1b75032c514e5d
parent41786fabfca5aa4fd5cab54a22c6596fdaa159d4

std: fix undefined value in Target.Query

This is an RLS footgun. Resolves: #21834

1 files changed, 15 insertions(+), 11 deletions(-)

lib/std/Target/Query.zig+15-11
......@@ -544,7 +544,7 @@ fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !
544544 const version_text = it.rest();
545545 if (version_text.len > 0) switch (tag.versionRangeTag()) {
546546 .none => return error.InvalidOperatingSystemVersion,
547 .semver, .hurd, .linux => range: {
547 .semver, .hurd, .linux => {
548548 var range_it = mem.splitSequence(u8, version_text, "...");
549549 result.os_version_min = .{
550550 .semver = parseVersion(range_it.first()) catch |err| switch (err) {
......@@ -552,21 +552,25 @@ fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !
552552 error.InvalidVersion => return error.InvalidOperatingSystemVersion,
553553 },
554554 };
555 result.os_version_max = .{
556 .semver = parseVersion(range_it.next() orelse break :range) catch |err| switch (err) {
557 error.Overflow => return error.InvalidOperatingSystemVersion,
558 error.InvalidVersion => return error.InvalidOperatingSystemVersion,
559 },
560 };
555 if (range_it.next()) |v| {
556 result.os_version_max = .{
557 .semver = parseVersion(v) catch |err| switch (err) {
558 error.Overflow => return error.InvalidOperatingSystemVersion,
559 error.InvalidVersion => return error.InvalidOperatingSystemVersion,
560 },
561 };
562 }
561563 },
562 .windows => range: {
564 .windows => {
563565 var range_it = mem.splitSequence(u8, version_text, "...");
564566 result.os_version_min = .{
565567 .windows = try Target.Os.WindowsVersion.parse(range_it.first()),
566568 };
567 result.os_version_max = .{
568 .windows = try Target.Os.WindowsVersion.parse(range_it.next() orelse break :range),
569 };
569 if (range_it.next()) |v| {
570 result.os_version_max = .{
571 .windows = try Target.Os.WindowsVersion.parse(v),
572 };
573 }
570574 },
571575 };
572576}