From d62309bbb22f86d6ad30e0103cc235e93ffc78b0 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 6 Nov 2023 16:46:26 +0100 Subject: [PATCH] Fix various mis-uses of Environment::forEachEntry() Most of them introduced with 08bacd3f19b817a7ffbd606a92eff5000eaaca2c. Fixes: QTCREATORBUG-29857 Change-Id: Ia897958865f00cb5f8f141659a652aee05aa1355 Reviewed-by: hjk --- src/libs/utils/terminalinterface.cpp | 5 +++-- src/plugins/cmakeprojectmanager/presetsmacros.cpp | 14 ++++++++++---- src/plugins/docker/dockerdevice.cpp | 8 +++++--- src/plugins/qmakeprojectmanager/qmakeproject.cpp | 5 +++-- src/plugins/remotelinux/linuxdevice.cpp | 5 +++-- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/libs/utils/terminalinterface.cpp b/src/libs/utils/terminalinterface.cpp index 3cd1e5bb21d..de3f57145cc 100644 --- a/src/libs/utils/terminalinterface.cpp +++ b/src/libs/utils/terminalinterface.cpp @@ -356,8 +356,9 @@ void TerminalInterface::start() return; } QTextStream stream(d->envListFile.get()); - finalEnv.forEachEntry([&stream](const QString &key, const QString &value, bool) { - stream << key << '=' << value << '\0'; + finalEnv.forEachEntry([&stream](const QString &key, const QString &value, bool enabled) { + if (enabled) + stream << key << '=' << value << '\0'; }); if (d->envListFile->error() != QFile::NoError) { diff --git a/src/plugins/cmakeprojectmanager/presetsmacros.cpp b/src/plugins/cmakeprojectmanager/presetsmacros.cpp index 220d6d6575d..7681d2f7e13 100644 --- a/src/plugins/cmakeprojectmanager/presetsmacros.cpp +++ b/src/plugins/cmakeprojectmanager/presetsmacros.cpp @@ -116,8 +116,10 @@ static Environment getEnvCombined(const std::optional &optPresetEnv Environment result = env; if (optPresetEnv) { - optPresetEnv->forEachEntry([&result](const QString &key, const QString &value, bool) { - result.set(key, value); + optPresetEnv->forEachEntry([&result](const QString &key, const QString &value, + bool enabled) { + if (enabled) + result.set(key, value); }); } @@ -128,7 +130,9 @@ template void expand(const PresetType &preset, Environment &env, const FilePath &sourceDirectory) { const Environment presetEnv = getEnvCombined(preset.environment, env); - presetEnv.forEachEntry([&](const QString &key, const QString &value_, bool) { + presetEnv.forEachEntry([&](const QString &key, const QString &value_, bool enabled) { + if (!enabled) + return; QString value = value_; expandAllButEnv(preset, sourceDirectory, value); value = expandMacroEnv("env", value, [presetEnv](const QString ¯oName) { @@ -163,7 +167,9 @@ template void expand(const PresetType &preset, EnvironmentItems &envItems, const FilePath &sourceDirectory) { const Environment presetEnv = preset.environment ? *preset.environment : Environment(); - presetEnv.forEachEntry([&](const QString &key, const QString &value_, bool) { + presetEnv.forEachEntry([&](const QString &key, const QString &value_, bool enabled) { + if (!enabled) + return; QString value = value_; expandAllButEnv(preset, sourceDirectory, value); value = expandMacroEnv("env", value, [presetEnv](const QString ¯oName) { diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index 7dc014eadaf..03e6c0f00e8 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -662,9 +662,11 @@ CommandLine DockerDevicePrivate::withDockerExecCmd(const CommandLine &cmd, dockerCmd.addArg("-t"); if (env) { - env->forEachEntry([&](const QString &key, const QString &value, bool) { - dockerCmd.addArg("-e"); - dockerCmd.addArg(key + "=" + env->expandVariables(value)); + env->forEachEntry([&](const QString &key, const QString &value, bool enabled) { + if (enabled) { + dockerCmd.addArg("-e"); + dockerCmd.addArg(key + "=" + env->expandVariables(value)); + } }); } diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 53639778950..027aa5d2101 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -867,8 +867,9 @@ QtSupport::ProFileReader *QmakeBuildSystem::createProFileReader(const QmakeProFi rootProFileName, deviceRoot()); - env.forEachEntry([&](const QString &key, const QString &value, bool) { - m_qmakeGlobals->environment.insert(key, env.expandVariables(value)); + env.forEachEntry([&](const QString &key, const QString &value, bool enabled) { + if (enabled) + m_qmakeGlobals->environment.insert(key, env.expandVariables(value)); }); m_qmakeGlobals->setCommandLineArguments(rootProFileName, qmakeArgs); diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index 565b0675503..3f875f1ef4b 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -768,8 +768,9 @@ CommandLine SshProcessInterfacePrivate::fullLocalCommandLine() const inner.addArgs(QString("echo ") + s_pidMarker + "$$" + s_pidMarker + " && ", CommandLine::Raw); const Environment &env = q->m_setup.m_environment; - env.forEachEntry([&](const QString &key, const QString &value, bool) { - inner.addArgs(key + "='" + env.expandVariables(value) + '\'', CommandLine::Raw); + env.forEachEntry([&](const QString &key, const QString &value, bool enabled) { + if (enabled) + inner.addArgs(key + "='" + env.expandVariables(value) + '\'', CommandLine::Raw); }); if (!useTerminal && !commandLine.isEmpty())