[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 02255c5: Avoid spinning waiting for git-gui.exe on Windows,
Eli Zaretskii <=