Debugger: Only pass environmental differences to inferior

This amends 0f46ad4a55.
Passing the whole environment is unneeded, and can cause
problems with multi-line variables.

Change-Id: I49a32c550ba52737bb8f797e227bb883be8b1df1
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
This commit is contained in:
hjk
2015-07-16 11:12:43 +02:00
parent 7a675e2d64
commit d4206752ca
2 changed files with 16 additions and 6 deletions

View File

@@ -4263,9 +4263,13 @@ void GdbEngine::loadInitScript()
void GdbEngine::setEnvironmentVariables()
{
if (runParameters().environment.size()) {
foreach (const QString &env, runParameters().environment.toStringList())
postCommand("-gdb-set environment " + env.toUtf8());
Environment sysEnv = Environment::systemEnvironment();
Environment runEnv = runParameters().environment;
foreach (const EnvironmentItem &item, sysEnv.diff(runEnv)) {
if (item.unset)
postCommand("unset environment " + item.name.toUtf8());
else
postCommand("-gdb-set environment " + item.name.toUtf8() + '=' + item.value.toUtf8());
}
}