}
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