message: Always close pipes opened for subprocess communication. Closes
  * We still need to close the stdout/stderr pipes even if the subprocess failed
  to launch, otherwise we leak the fds.
diff: @@ -654,11 +654,13 @@ uint32_t Process::LaunchProcess(const char *app, const char *workingDir, const c
  uint32_t ret = (uint32_t)RunProcess(app, workingDir, cmdLine, currentEnvironment,
  result ? stdoutPipe : NULL, result ? stderrPipe : NULL);
  - if(ret && result)
  + if(result)
  {
  result->strStdout = "";
  result->strStderror = "";
  + if(ret)
  + {
  ssize_t stdoutRead, stderrRead;
  char chBuf[4096];
  do
  @@ -675,6 +677,7 @@ uint32_t Process::LaunchProcess(const char *app, const char *workingDir, const c
  result->strStderror += std::string(chBuf, stderrRead);
  } while(stderrRead > 0);
  + }
  // Close read ends.
  close(stdoutPipe[0]);
  