diff options
author | oni-link <knil.ino@gmail.com> | 2016-05-27 19:03:22 +0200 |
---|---|---|
committer | oni-link <knil.ino@gmail.com> | 2016-05-28 11:25:13 +0200 |
commit | 1e593436d083f94d1e56f130ee498a9ff69736d7 (patch) | |
tree | 02e0e2941a14e5b281974cd78358821878021a37 | |
parent | 677eae6b0f84ebbc165a73aee65262d71af312cc (diff) | |
download | rneovim-1e593436d083f94d1e56f130ee498a9ff69736d7.tar.gz rneovim-1e593436d083f94d1e56f130ee498a9ff69736d7.tar.bz2 rneovim-1e593436d083f94d1e56f130ee498a9ff69736d7.zip |
process.c: Close events are processed too late
Compiling with macro -DEXITFREE opens a code path on which the event
loop is used after it was teared down, because not all close events
were processed yet.
-rw-r--r-- | src/nvim/event/process.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/nvim/event/process.c b/src/nvim/event/process.c index 554a592d5c..3c8c08e235 100644 --- a/src/nvim/event/process.c +++ b/src/nvim/event/process.c @@ -126,8 +126,10 @@ void process_teardown(Loop *loop) FUNC_ATTR_NONNULL_ALL } } - // Wait until all children exit - LOOP_PROCESS_EVENTS_UNTIL(loop, loop->events, -1, kl_empty(loop->children)); + // Wait until all children exit and all close events are processed. + LOOP_PROCESS_EVENTS_UNTIL( + loop, loop->events, -1, + kl_empty(loop->children) && queue_empty(loop->events)); pty_process_teardown(loop); } |