From efc568be4e7da9481f5b6d35ff2854c1ff4cd2be Mon Sep 17 00:00:00 2001 From: Joe Wilm Date: Tue, 29 May 2018 11:15:03 -0700 Subject: [PATCH] Fix issue with endless allocation loop Shrinking columns wasn't updating hidden rows in the storage buffer on resizing. When growing the columns again, this resulted in an endless allocation loop. Only one real change was made here, and that was `raw.iter_mut()` to `raw.iter_mut_raw()`. The method `shrink_cols` was relocated to be adjacent to `grow_cols` in the code. --- src/grid/mod.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/grid/mod.rs b/src/grid/mod.rs index 0998d640..c9829c2e 100644 --- a/src/grid/mod.rs +++ b/src/grid/mod.rs @@ -252,6 +252,14 @@ impl Grid { self.cols = cols; } + fn shrink_cols(&mut self, cols: index::Column) { + for row in self.raw.iter_mut_raw() { + row.shrink(cols); + } + + self.cols = cols; + } + /// Remove lines from the visible area /// /// The behavior in Terminal.app and iTerm.app is to keep the cursor at the @@ -437,14 +445,6 @@ impl Grid { // pub fn swap_lines(&mut self, src: index::Line, dst: index::Line) { // self.raw.swap(*src, *dst); // } - - fn shrink_cols(&mut self, cols: index::Column) { - for row in self.raw.iter_mut() { - row.shrink(cols); - } - - self.cols = cols; - } } impl<'a, T> Iterator for GridIterator<'a, T> {