diff --git a/driver/linker.cpp b/driver/linker.cpp index 5a02bb157e..9c6d46ac1f 100644 --- a/driver/linker.cpp +++ b/driver/linker.cpp @@ -358,11 +358,16 @@ int executeMsvcToolAndWait(const std::string &tool, * be parsed properly. */ - std::string cmdPath = getenv("ComSpec"); + auto comspecEnv = getenv("ComSpec"); + if (!comspecEnv) { + warning(Loc(), "'ComSpec' environment variable is not set, assuming 'cmd.exe'."); + comspecEnv = "cmd.exe"; + } + std::string cmdExecutable = comspecEnv; std::string batchFile = exe_path::prependBinDir( global.params.targetTriple.isArch64Bit() ? "amd64.bat" : "x86.bat"); - commandLine.append(windows::quoteArg(cmdPath)); + commandLine.append(windows::quoteArg(cmdExecutable)); commandLine.append(" /s /c \""); commandLine.append(windows::quoteArg(batchFile)); commandLine.push_back(' ');