From 1e593436d083f94d1e56f130ee498a9ff69736d7 Mon Sep 17 00:00:00 2001 From: oni-link Date: Fri, 27 May 2016 19:03:22 +0200 Subject: 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. --- src/nvim/event/process.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') 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); } -- cgit