summaryrefslogtreecommitdiff
path: root/src
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 /src
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
Diffstat (limited to 'src')
-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;
}
}