From 270131004613b599c74ef65b160aeb4b5bb6d33e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kochma=C5=84ski?= Date: Sun, 19 Feb 2017 14:41:25 +0100 Subject: [PATCH] external-process-wait: handle stopped process we have a few possibilities here. Handle them correctly. --- src/lsp/process.lsp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/lsp/process.lsp b/src/lsp/process.lsp index c48ea3996..762e48626 100644 --- a/src/lsp/process.lsp +++ b/src/lsp/process.lsp @@ -34,10 +34,15 @@ (let ((pid (external-process-pid process))) (when pid (multiple-value-bind (status code pid) (si:waitpid pid wait) - (unless (and wait (null status) (null code) (null pid)) - (setf (external-process-pid process) pid - (external-process-%status process) status - (external-process-%code process) code))))) + (case status + ((:exitted :signalled :abort :error) + (setf (external-process-pid process) nil + (external-process-%status process) status + (external-process-%code process) code)) + ((:stopped :running) + (setf (external-process-pid process) pid + (external-process-%status process) status + (external-process-%code process) code)))))) (values (external-process-%status process) (external-process-%code process)))