From 0c6f0192857265fd0c94cba165a28a448c1ba18b Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Mon, 24 May 2021 19:14:34 +0200 Subject: [PATCH] LibVT: Fix out-of bounds line insert Unless DECOM mode is enabled, the cursor positions are measured from the top left corner of the screen. We counted from the top margin, causing line inserts in `vim` to go out-of-bounds and crash the terminal. --- Userland/Libraries/LibVT/Terminal.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibVT/Terminal.cpp b/Userland/Libraries/LibVT/Terminal.cpp index 8d3758743e..3e5a4742b9 100644 --- a/Userland/Libraries/LibVT/Terminal.cpp +++ b/Userland/Libraries/LibVT/Terminal.cpp @@ -608,7 +608,7 @@ void Terminal::IL(Parameters params) count = params[0]; invalidate_cursor(); for (; count > 0; --count) { - active_buffer().insert(cursor_row() + m_scroll_region_top, make(m_columns)); + active_buffer().insert(cursor_row(), make(m_columns)); if (m_scroll_region_bottom + 1 < active_buffer().size()) active_buffer().remove(m_scroll_region_bottom + 1); else @@ -640,7 +640,7 @@ void Terminal::DL(Parameters params) count = min(count, max_count); for (int c = count; c > 0; --c) { - active_buffer().remove(cursor_row() + m_scroll_region_top); + active_buffer().remove(cursor_row()); if (m_scroll_region_bottom < active_buffer().size()) active_buffer().insert(m_scroll_region_bottom, make(m_columns)); else