This restores the previous behavior of runCommand().
When the child process could not be properly terminated the
error "RunCommand: could not terminate child process" was being
issued. However, in
fb7b7e52 there was a misinterpretation
between this condition and the exit status of the child and
these two different errors were mixed up. They are now
disentangled again.
DWORD pret;
BOOL success = GetExitCodeProcess(process.hProcess, &pret);
bool valid = (pret == 0) && success;
+ if (!success)
+ pret = -1;
if (!infile.empty())
CloseHandle(startup.hStdInput);
CloseHandle(process.hProcess);
if (fclose(inf) != 0)
- valid = false;
+ pret = -1;
#elif defined (HAVE_PCLOSE)
int const pret = pclose(inf);
bool const valid = (WEXITSTATUS(pret) == 0);
#error No pclose() function.
#endif
- if (!valid)
+ if (pret == -1)
perror("RunCommand: could not terminate child process");
return { valid, result };