[windows] Use a well-known path for ComSpec if we fail to retrieve it

Summary: Right now we always try to retrieve ComSpec and if we fail, we give up. This rarely fails, but we can update the logic so that we fail even less frequently. Since there is a well-known path (albeit not always correct), try the path when we failed to retrieve it. Note that on other platforms, we generally just return a well-known path without any checking.

Reviewers: asmith, zturner, labath

Reviewed By: zturner, labath

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D49451

llvm-svn: 337395
This commit is contained in:
Stella Stamenova 2018-07-18 15:21:54 +00:00
parent 5e3a27593b
commit 027a9fc2c5
1 changed files with 7 additions and 2 deletions

View File

@ -98,9 +98,14 @@ FileSpec HostInfoWindows::GetProgramFileSpec() {
}
FileSpec HostInfoWindows::GetDefaultShell() {
// Try to retrieve ComSpec from the environment. On the rare occasion
// that it fails, try a well-known path for ComSpec instead.
std::string shell;
GetEnvironmentVar("ComSpec", shell);
return FileSpec(shell, false);
if (GetEnvironmentVar("ComSpec", shell))
return FileSpec(shell, false);
return FileSpec("C:\\Windows\\system32\\cmd.exe", false);
}
bool HostInfoWindows::GetEnvironmentVar(const std::string &var_name,