Debugger: imitate windows gdb all uppercase PATH env variable name

Task-number: QTCREATORBUG-19547
Change-Id: I57295b7febd7e017408d5d75ebec7020a7cbb32f
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
David Schulz
2018-01-03 10:59:50 +01:00
parent 359e4c88c9
commit ffe120a43f

View File

@@ -3955,14 +3955,22 @@ void GdbEngine::loadInitScript()
void GdbEngine::setEnvironmentVariables()
{
auto isWindowsPath = [this](const QString &str){
return HostOsInfo::isWindowsHost()
&& !isRemoteEngine()
&& str.compare("path", Qt::CaseInsensitive) == 0;
};
Environment sysEnv = Environment::systemEnvironment();
Environment runEnv = runParameters().inferior.environment;
foreach (const EnvironmentItem &item, sysEnv.diff(runEnv)) {
// imitate the weird windows gdb behavior of setting the case of the path environment
// variable name to an all uppercase PATH
const QString name = isWindowsPath(item.name) ? "PATH" : item.name;
if (item.operation == EnvironmentItem::Unset)
runCommand({"unset environment " + item.name});
runCommand({"unset environment " + name});
else
runCommand({"-gdb-set environment " + item.name + '='
+ item.value});
runCommand({"-gdb-set environment " + name + '=' + item.value});
}
}