mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 16:45:03 +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:
committed by
Andreas Kling
parent
c503a28e19
commit
21ee0ad6fc
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user