From e99057b179cbdc0851c36575dd043fcdaa45437a Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Thu, 12 Dec 2019 16:02:07 +0100 Subject: [PATCH] Fix crash when resizing Alacritty Fixes #3088. --- alacritty_terminal/src/grid/storage.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/alacritty_terminal/src/grid/storage.rs b/alacritty_terminal/src/grid/storage.rs index 8397f2c..71b0e02 100644 --- a/alacritty_terminal/src/grid/storage.rs +++ b/alacritty_terminal/src/grid/storage.rs @@ -254,7 +254,7 @@ impl Storage { debug_assert!(count.abs() as usize <= self.inner.len()); let len = self.inner.len(); - self.zero = self.wrap_index((self.zero as isize + count + len as isize) as usize); + self.zero = (self.zero as isize + count + len as isize) as usize % self.len; } /// Rotate the grid up, moving all existing lines down in history. @@ -838,4 +838,22 @@ mod test { assert_eq!(storage.zero, shrinking_expected.zero); assert_eq!(storage.len, shrinking_expected.len); } + + #[test] + fn rotate_wrap_zero() { + let mut storage = Storage { + inner: vec![ + Row::new(Column(1), &'-'), + Row::new(Column(1), &'-'), + Row::new(Column(1), &'-'), + ], + zero: 2, + visible_lines: Line(0), + len: 3, + }; + + storage.rotate(2); + + assert!(storage.zero < storage.inner.len()); + } }