1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:17:36 +00:00

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;
}