aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/os/event.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/nvim/os/event.c b/src/nvim/os/event.c
index b0bd7ca55a..4c3a4581c3 100644
--- a/src/nvim/os/event.c
+++ b/src/nvim/os/event.c
@@ -69,24 +69,19 @@ void event_teardown(void)
process_events_from(immediate_events);
process_events_from(deferred_events);
- // reset the stop_flag to ensure `uv_run` below won't exit early. This hack
- // is required because the `process_events_from` above may call `event_push`
- // which will set the stop_flag to 1(uv_stop)
- uv_default_loop()->stop_flag = 0;
input_stop();
channel_teardown();
job_teardown();
server_teardown();
signal_teardown();
terminal_teardown();
+
// this last `uv_run` will return after all handles are stopped, it will
// also take care of finishing any uv_close calls made by other *_teardown
// functions.
- uv_run(uv_default_loop(), UV_RUN_DEFAULT);
- // abort that if we left unclosed handles
- if (uv_loop_close(uv_default_loop())) {
- abort();
- }
+ do {
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+ } while (uv_loop_close(uv_default_loop()));
}
// Wait for some event