From 0bb3fac61be9d5bbfddc07f1cbb14e76d4c3efdc Mon Sep 17 00:00:00 2001 From: John Doty Date: Mon, 19 Dec 2022 19:07:05 -0800 Subject: [PATCH] Don't underflow on no ports If ports are empty we underflow on `len()-1`, which is bad. Stop doing that. --- src/client/ui.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/client/ui.rs b/src/client/ui.rs index 49b3560..8a6c9f6 100644 --- a/src/client/ui.rs +++ b/src/client/ui.rs @@ -399,7 +399,10 @@ impl UI { KeyEvent { code: KeyCode::Down, .. } | KeyEvent { code: KeyCode::Char('k'), .. } => { let index = match self.selection.selected() { - Some(i) => (i + 1).min(self.ports.len() - 1), + Some(i) => { + assert!(self.ports.len() > 0, "We must have ports because we have a selection."); + (i + 1).min(self.ports.len() - 1) + } None => 0, }; self.selection.select(Some(index)); @@ -466,11 +469,15 @@ impl UI { } } - let selected = match self.selection.selected() { - Some(i) => i.min(self.ports.len() - 1), - None => 0, + let selected = if self.ports.len() == 0 { + None // No ports, no selection. + } else { + match self.selection.selected() { + Some(i) => Some(i.min(self.ports.len() - 1)), + None => Some(0), + } }; - self.selection.select(Some(selected)); + self.selection.select(selected); } Some(UIEvent::ServerLine(line)) => { while self.lines.len() >= 1024 {