From 3d0903b6491f0e729bf6c8c689591a1323e5be2f Mon Sep 17 00:00:00 2001 From: ste-el-bow Date: Mon, 20 Oct 2025 11:11:36 +0200 Subject: [PATCH] bugfix: views: Fix index out of range in message view focus. When msg_btn_list is empty or focus_msg is invalid, ensure focus_msg is set to a valid index using max(0, len(msg_btn_list) - 1) instead of just len(msg_btn_list) - 1, which would cause an IndexError. This prevents crashes when navigating to views with no messages. --- zulipterminal/ui_tools/views.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/zulipterminal/ui_tools/views.py b/zulipterminal/ui_tools/views.py index 02b3afbd0b..4dbdef9968 100644 --- a/zulipterminal/ui_tools/views.py +++ b/zulipterminal/ui_tools/views.py @@ -123,8 +123,13 @@ def __init__(self, model: Any, view: Any) -> None: def main_view(self) -> List[Any]: msg_btn_list = create_msg_box_list(self.model) focus_msg = self.model.get_focus_in_current_narrow() - if focus_msg is None: - focus_msg = len(msg_btn_list) - 1 + if ( + not msg_btn_list + or focus_msg is None + or focus_msg < 0 + or focus_msg >= len(msg_btn_list) + ): + focus_msg = max(0, len(msg_btn_list) - 1) self.focus_msg = focus_msg return msg_btn_list