emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 02255c5: Avoid spinning waiting for git-gui.exe on


From: Eli Zaretskii
Subject: [Emacs-diffs] master 02255c5: Avoid spinning waiting for git-gui.exe on Windows
Date: Tue, 29 Aug 2017 14:56:34 -0400 (EDT)

branch: master
commit 02255c5fbc7e6dc0206db978994617cc72de4bb8
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Avoid spinning waiting for git-gui.exe on Windows
    
    * src/w32proc.c (waitpid): If GetExitCodeProcess returns
    STILL_ACTIVE, and we were called with WNOHANG, pretend that the
    process exited.  (Bug#28268)
---
 src/w32proc.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/w32proc.c b/src/w32proc.c
index ffd5f0d0..71bd28d 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -1492,12 +1492,17 @@ waitpid (pid_t pid, int *status, int options)
     }
   if (retval == STILL_ACTIVE)
     {
-      /* Should never happen.  */
+      /* Should never happen.  But it does, with invoking git-gui.exe
+        asynchronously.  So we punt, and just report this process as
+        exited with exit code 259, when we are called with WNOHANG
+        from child_status_changed, because in that case we already
+        _know_ the process has died.  */
       DebPrint (("Wait.WaitForMultipleObjects returned an active process\n"));
-      if (pid > 0 && dont_wait)
-       return 0;
-      errno = EINVAL;
-      return -1;
+      if (!(pid > 0 && dont_wait))
+       {
+         errno = EINVAL;
+         return -1;
+       }
     }
 
   /* Massage the exit code from the process to match the format expected



reply via email to

[Prev in Thread] Current Thread [Next in Thread]