LibVT: Don't crash when clicking outside of the terminal's buffer area

When resizing a terminal window the number of columns may change.
Previously we assumed that this also affects lines which were in the
terminal's buffer while that is not necessarily true.
This commit is contained in:
Gunnar Beutner
2021-06-23 16:19:40 +02:00
committed by Andreas Kling
parent c503a28e19
commit 21ee0ad6fc

View File

@@ -592,8 +592,9 @@ VT::Position TerminalWidget::buffer_position_at(const Gfx::IntPoint& position) c
column = 0;
if (row >= m_terminal.rows())
row = m_terminal.rows() - 1;
if (column >= m_terminal.columns())
column = m_terminal.columns() - 1;
auto& line = m_terminal.line(row);
if (column >= (int)line.length())
column = line.length() - 1;
row += m_scrollbar->value();
return { row, column };
}
@@ -736,7 +737,7 @@ void TerminalWidget::doubleclick_event(GUI::MouseEvent& event)
start_column = column;
}
for (int column = position.column(); column < m_terminal.columns() && (line.code_point(column) == ' ') == want_whitespace; ++column) {
for (int column = position.column(); column < (int)line.length() && (line.code_point(column) == ' ') == want_whitespace; ++column) {
end_column = column;
}