From 25e26e0056c00bfb61f73a1ea4325257098c2c23 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Thu, 30 Oct 2014 09:23:35 -0300 Subject: job: Close libuv handles when uv_spawn fails Commit @709685b4612f4 removed the close_job_* calls when uv_spawn fails because of memory errors when trying to cleanup unitialized {R,W}Stream instances, but the uv_pipe_t instances must be closed because they are added to the event loop queue by previous `uv_pipe_init()` calls --- src/nvim/os/job.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/nvim/os/job.c b/src/nvim/os/job.c index f8ad6874c9..bbf8006ab6 100644 --- a/src/nvim/os/job.c +++ b/src/nvim/os/job.c @@ -215,6 +215,10 @@ Job *job_start(char **argv, // Spawn the job if (uv_spawn(uv_default_loop(), &job->proc, &job->proc_opts) != 0) { + uv_close((uv_handle_t *)&job->proc_stdin, NULL); + uv_close((uv_handle_t *)&job->proc_stdout, NULL); + uv_close((uv_handle_t *)&job->proc_stderr, NULL); + event_poll(0); *status = -1; return NULL; } -- cgit