From a7765f8003b572430cf1255709b8732240a703f0 Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Mon, 7 Mar 2022 08:14:39 -0500 Subject: Flush minus/plus line buffers in additional code locations Fixes #1002 --- src/handlers/diff_header.rs | 2 ++ src/paint.rs | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/handlers/diff_header.rs b/src/handlers/diff_header.rs index 4b82bec4..d00bab10 100644 --- a/src/handlers/diff_header.rs +++ b/src/handlers/diff_header.rs @@ -83,6 +83,7 @@ impl<'a> StateMachine<'a> { )); } + self.painter.paint_buffered_minus_and_plus_lines(); // In color_only mode, raw_line's structure shouldn't be changed. // So it needs to avoid fn _handle_diff_header_header_line // (it connects the plus_file and minus_file), @@ -127,6 +128,7 @@ impl<'a> StateMachine<'a> { )); self.current_file_pair = Some((self.minus_file.clone(), self.plus_file.clone())); + self.painter.paint_buffered_minus_and_plus_lines(); // In color_only mode, raw_line's structure shouldn't be changed. // So it needs to avoid fn _handle_diff_header_header_line // (it connects the plus_file and minus_file), diff --git a/src/paint.rs b/src/paint.rs index 709d7d6c..7f497fe1 100644 --- a/src/paint.rs +++ b/src/paint.rs @@ -126,6 +126,9 @@ impl<'p> Painter<'p> { } pub fn paint_buffered_minus_and_plus_lines(&mut self) { + if self.minus_lines.is_empty() && self.plus_lines.is_empty() { + return; + } paint_minus_and_plus_lines( MinusPlus::new(&self.minus_lines, &self.plus_lines), &mut self.line_numbers_data, -- cgit v1.2.3