From c92e14abc70c42e399da69346c8a20681b2c1b7a Mon Sep 17 00:00:00 2001 From: Hourann Date: Fri, 18 Jan 2019 14:59:02 +0800 Subject: [PATCH 1/2] Fix panic at index out of bound --- xray_core/src/buffer_view.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xray_core/src/buffer_view.rs b/xray_core/src/buffer_view.rs index 5c365d82..4008cbb9 100644 --- a/xray_core/src/buffer_view.rs +++ b/xray_core/src/buffer_view.rs @@ -1014,7 +1014,7 @@ impl View for BufferView { } let longest_row = buffer.longest_row(); - let longest_line = if start.row <= longest_row && longest_row <= end.row { + let longest_line = if start.row <= longest_row && longest_row < end.row { lines[(longest_row - start.row) as usize].clone() } else { String::from_utf16_lossy(&buffer.line(buffer.longest_row()).unwrap()) From a83bd5842364962f4070c76c79f4c8239222c392 Mon Sep 17 00:00:00 2001 From: Federico Date: Mon, 15 Apr 2019 21:29:24 +0200 Subject: [PATCH 2/2] Add test --- xray_core/src/buffer_view.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/xray_core/src/buffer_view.rs b/xray_core/src/buffer_view.rs index 4008cbb9..fc006b32 100644 --- a/xray_core/src/buffer_view.rs +++ b/xray_core/src/buffer_view.rs @@ -1903,6 +1903,23 @@ mod tests { } } + #[test] + fn test_longest_line_in_frame() { + let buffer = Rc::new(RefCell::new(Buffer::new(0))); + buffer + .borrow_mut() + .edit(&[0..0], "1\n1\n1\n1\n11\n1\n1"); + let line_height = 6.0; + + let mut editor = BufferView::new(buffer.clone(), 0, None); + editor + .set_height(2.0 * line_height) + .set_line_height(line_height) + .set_scroll_top(2.0 * line_height); + + let _ = editor.render(); + } + #[test] fn test_render_past_last_line() { let line_height = 4.0;