From 8af13ed946aa06636c633327c6549993e2e50116 Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Fri, 27 Aug 2021 20:17:11 -0600 Subject: fix(process_wait): drain proc.events directly #15501 After a process's refcnt is decremented to zero, it enqueues a `process_close_event` on its own event queue. In `process_wait`, this event should be processed immediately so that any process close callbacks are executed before `process_wait` returns. Update `process_wait` to always process the process's event queue after the process is freed, rather than the event queue passed in as an argument. --- src/nvim/event/process.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/nvim/event/process.c b/src/nvim/event/process.c index b93d6cc0ab..a2aafc94c8 100644 --- a/src/nvim/event/process.c +++ b/src/nvim/event/process.c @@ -200,9 +200,9 @@ int process_wait(Process *proc, int ms, MultiQueue *events) if (proc->refcount == 1) { // Job exited, free its resources. decref(proc); - if (events) { + if (proc->events) { // the decref call created an exit event, process it now - multiqueue_process_events(events); + multiqueue_process_events(proc->events); } } else { proc->refcount--; -- cgit