From 0bd08a80ff53b768d6e8a68c3744e321581571b8 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> {