summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2020-05-25 22:43:40 +1000
committerMaxime Coste <mawww@kakoune.org>2021-07-12 10:25:58 +1000
commitcd613da050ba4e59064435e4d34d3802561a862c (patch)
tree7164ed4cd3d2f750ae8373b64c1ced8d4f844572
parent89e0b4b830139b1cffedb0bfec2ed69c629a445d (diff)
Tolerate bliting window that overflow the target
Although we try to avoid those, ensuring it never happens is tricky, and tolerating them avoids the crash. Fixes #3498
-rw-r--r--src/terminal_ui.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/terminal_ui.cc b/src/terminal_ui.cc
index 3b87ea0f..2ff84312 100644
--- a/src/terminal_ui.cc
+++ b/src/terminal_ui.cc
@@ -145,7 +145,7 @@ struct TerminalUI::Window::Line
void TerminalUI::Window::blit(Window& target)
{
- kak_assert(pos.line + lines.size() <= target.lines.size());
+ kak_assert(pos.line < target.lines.size());
auto target_line = target.lines.begin() + (size_t)pos.line;
for (auto& line : lines)
{
@@ -153,7 +153,8 @@ void TerminalUI::Window::blit(Window& target)
target_line->resize(target.size.column);
target_line->atoms.insert(target_line->erase_range(pos.column, size.column),
line.atoms.begin(), line.atoms.end());
- ++target_line;
+ if (++target_line == target.lines.end())
+ break;
}
}