]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid spinning waiting for git-gui.exe on Windows
authorEli Zaretskii <eliz@gnu.org>
Tue, 29 Aug 2017 18:53:49 +0000 (21:53 +0300)
committerEli Zaretskii <eliz@gnu.org>
Tue, 29 Aug 2017 18:53:49 +0000 (21:53 +0300)
* 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

index ffd5f0d0a1a8bbe05e20c7120ba6252786073b5c..71bd28d3c243aa4b8f93fc0357fc01c53060a7cf 100644 (file)
@@ -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