aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/event/process.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-11-12 15:34:04 +0100
committerGitHub <noreply@github.com>2017-11-12 15:34:04 +0100
commit881f9e42d1821214b97732022b406ddb4330b775 (patch)
treed45ceeae8c139a9b0be4c7812982b58c7772e15c /src/nvim/event/process.c
parentb6a603fe515ee1cd554a8c4151286b26209a467b (diff)
downloadrneovim-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.c7
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);