From 027a9fc2c54482a12d0ff4aae916a6491ee179a1 Mon Sep 17 00:00:00 2001 From: Stella Stamenova Date: Wed, 18 Jul 2018 15:21:54 +0000 Subject: [PATCH] [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 --- lldb/source/Host/windows/HostInfoWindows.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lldb/source/Host/windows/HostInfoWindows.cpp b/lldb/source/Host/windows/HostInfoWindows.cpp index 4b984967be55..bd3f74f2e2f3 100644 --- a/lldb/source/Host/windows/HostInfoWindows.cpp +++ b/lldb/source/Host/windows/HostInfoWindows.cpp @@ -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,