diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/terminal.c | 4 | ||||
-rw-r--r-- | src/nvim/ui.c | 5 |
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(); } } |