diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2017-11-12 15:34:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-12 15:34:04 +0100 |
commit | 881f9e42d1821214b97732022b406ddb4330b775 (patch) | |
tree | d45ceeae8c139a9b0be4c7812982b58c7772e15c /src/nvim/event/process.c | |
parent | b6a603fe515ee1cd554a8c4151286b26209a467b (diff) | |
download | rneovim-881f9e42d1821214b97732022b406ddb4330b775.tar.gz rneovim-881f9e42d1821214b97732022b406ddb4330b775.tar.bz2 rneovim-881f9e42d1821214b97732022b406ddb4330b775.zip |
process_close(): uv_unref() detached processes (#7539)
Doc for UV_PROCESS_DETACHED in uv.h mentions:
> child process will still keep the parent's event loop alive unless
> the parent process calls uv_unref() on the child's process handle.
ref #3944
Diffstat (limited to 'src/nvim/event/process.c')
-rw-r--r-- | src/nvim/event/process.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/event/process.c b/src/nvim/event/process.c index 8371d3cd48..41e793500a 100644 --- a/src/nvim/event/process.c +++ b/src/nvim/event/process.c @@ -324,6 +324,13 @@ static void process_close(Process *proc) } assert(!proc->closed); proc->closed = true; + + if (proc->detach) { + if (proc->type == kProcessTypeUv) { + uv_unref((uv_handle_t *)&(((LibuvProcess *)proc)->uv)); + } + } + switch (proc->type) { case kProcessTypeUv: libuv_process_close((LibuvProcess *)proc); |