diff --git a/ly-ui/src/components/generic.zig b/ly-ui/src/components/generic.zig index 2d0b3c4..76de5b4 100644 --- a/ly-ui/src/components/generic.zig +++ b/ly-ui/src/components/generic.zig @@ -140,6 +140,7 @@ pub fn CyclableLabel(comptime ItemType: type, comptime ChangeItemType: type) typ fn goLeft(ptr: *anyopaque) !bool { var self: *Self = @ptrCast(@alignCast(ptr)); + if (self.list.items.len == 0) return false; self.current = if (self.current == 0) self.list.items.len - 1 else self.current - 1; if (self.change_item_fn) |change_item_fn| { @@ -156,6 +157,7 @@ pub fn CyclableLabel(comptime ItemType: type, comptime ChangeItemType: type) typ fn goRight(ptr: *anyopaque) !bool { var self: *Self = @ptrCast(@alignCast(ptr)); + if (self.list.items.len == 0) return false; self.current = if (self.current == self.list.items.len - 1) 0 else self.current + 1; if (self.change_item_fn) |change_item_fn| { diff --git a/src/main.zig b/src/main.zig index 4d6bb65..489b46b 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1148,7 +1148,7 @@ pub fn main(init: std.process.Init) !void { // Skip if autologin is active to prevent overriding autologin session var default_input = state.config.default_input; - const min_session_index = state.session.label.list.items.len - 1; + const min_session_index = if (state.session.label.list.items.len == 0) 0 else state.session.label.list.items.len - 1; if (state.config.save_file_dir != null and !state.is_autologin) { if (state.login_text) |box| {