From 996fc2256bafabeb8f5806d70d531311a34d29f9 Mon Sep 17 00:00:00 2001 From: Mathias Fußenegger Date: Thu, 11 Aug 2022 17:04:55 +0200 Subject: fix(lsp): avoid pipe leaks if lsp cmd isn't executable (#19717) The `onexit` handler isn't called if `uv.spawn` doesn't return a handle. --- runtime/lua/vim/lsp/rpc.lua | 3 +++ 1 file changed, 3 insertions(+) (limited to 'runtime/lua') diff --git a/runtime/lua/vim/lsp/rpc.lua b/runtime/lua/vim/lsp/rpc.lua index 3d61dd5e33..0926912066 100644 --- a/runtime/lua/vim/lsp/rpc.lua +++ b/runtime/lua/vim/lsp/rpc.lua @@ -340,6 +340,9 @@ local function start(cmd, cmd_args, dispatchers, extra_spawn_params) end handle, pid = uv.spawn(cmd, spawn_params, onexit) if handle == nil then + stdin:close() + stdout:close() + stderr:close() local msg = string.format('Spawning language server with cmd: `%s` failed', cmd) if string.match(pid, 'ENOENT') then msg = msg -- cgit