From bab972733c3855a94fae9eb60b76b1f0bd9f54e9 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 4 May 2026 10:43:05 -0500 Subject: [PATCH] fix 1x1 grid scrolling --- src/grid.rs | 2 +- tests/scroll.rs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/grid.rs b/src/grid.rs index 7768d06..b89d945 100644 --- a/src/grid.rs +++ b/src/grid.rs @@ -680,7 +680,7 @@ impl Grid { let mut prev_pos = self.pos; self.pos.col = 0; let scrolled = self.row_inc_scroll(1); - prev_pos.row -= scrolled; + prev_pos.row = prev_pos.row.saturating_sub(scrolled); let new_pos = self.pos; self.drawing_row_mut(prev_pos.row) // we assume self.pos.row is always valid, and so prev_pos.row diff --git a/tests/scroll.rs b/tests/scroll.rs index a73a688..801cf7a 100644 --- a/tests/scroll.rs +++ b/tests/scroll.rs @@ -176,6 +176,15 @@ fn edge_of_screen() { ); } +#[test] +fn one_row_wrap_does_not_panic() { + let mut parser = vt100::Parser::new(1, 1, 10); + + parser.process(b"ab"); + + assert_eq!(parser.screen().contents(), "b"); +} + #[test] fn scrollback_larger_than_rows() { let mut parser = vt100::Parser::new(3, 20, 10);