aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/terminal.c4
-rw-r--r--src/nvim/ui.c5
2 files changed, 5 insertions, 4 deletions
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c
index bd7b9fc58f..b0104a4e4c 100644
--- a/src/nvim/terminal.c
+++ b/src/nvim/terminal.c
@@ -977,9 +977,7 @@ static void refresh_terminal(Terminal *term)
// event.
static void refresh_timer_cb(TimeWatcher *watcher, void *data)
{
- if (exiting) {
- // bad things can happen if we redraw when exiting, and there's no need to
- // update the buffer.
+ if (exiting) { // Cannot redraw (requires event loop) during teardown/exit.
goto end;
}
Terminal *term;
diff --git a/src/nvim/ui.c b/src/nvim/ui.c
index d3784b6cd3..8c72c28e56 100644
--- a/src/nvim/ui.c
+++ b/src/nvim/ui.c
@@ -258,7 +258,10 @@ void ui_detach_impl(UI *ui)
shift_index++;
}
- if (--ui_count) {
+ if (--ui_count
+ // During teardown/exit the loop was already destroyed, cannot schedule.
+ // https://github.com/neovim/neovim/pull/5119#issuecomment-258667046
+ && !exiting) {
ui_schedule_refresh();
}
}