diff --git a/lib/std/os/uefi/protocol/device_path.zig b/lib/std/os/uefi/protocol/device_path.zig index 7fa8090df7..ebd2463be4 100644 --- a/lib/std/os/uefi/protocol/device_path.zig +++ b/lib/std/os/uefi/protocol/device_path.zig @@ -26,12 +26,10 @@ pub const DevicePath = extern struct { /// Returns the next DevicePath node in the sequence, if any. pub fn next(self: *const DevicePath) ?*const DevicePath { + const subtype: uefi.DevicePath.End.Subtype = @enumFromInt(self.subtype); + if (self.type == .end and subtype == .end_entire) return null; const bytes: [*]const u8 = @ptrCast(self); - const next_node: *const DevicePath = @ptrCast(bytes + self.length); - if (next_node.type == .end and @as(uefi.DevicePath.End.Subtype, @enumFromInt(next_node.subtype)) == .end_entire) - return null; - - return next_node; + return @ptrCast(bytes + self.length); } /// Calculates the total length of the device path structure in bytes, including the end of device path node.