Terminal: Fix Environment

Parsing entries like:
"name=value=this" would drop the "value=" part from the environment variable.

This patch fixes that.

Fixes: QTCREATORBUG-30844
Change-Id: Ia50d4180bd8f966f61f92e550b046c8ece529e1b
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Marcus Tillmanns
2024-05-27 09:14:25 +02:00
parent d2cb8f0ccb
commit 7a4bbab6f7

View File

@@ -190,16 +190,17 @@ bool UnixPtyProcess::startProcess(const QString &shellPath,
m_readMasterNotify->disconnect(); m_readMasterNotify->disconnect();
}); });
QStringList varNames; QProcessEnvironment env;
for (const QString &line : std::as_const(environment)) for (const QString &envEntry : environment) {
varNames.append(line.split("=").first()); const int idx = envEntry.indexOf('=');
if (idx != -1)
QProcessEnvironment envFormat; env.insert(envEntry.left(idx), envEntry.mid(idx + 1));
for (const QString &line : std::as_const(environment)) else
envFormat.insert(line.split("=").first(), line.split("=").last()); env.insert(envEntry, QString());
}
m_shellProcess.setWorkingDirectory(workingDir); m_shellProcess.setWorkingDirectory(workingDir);
m_shellProcess.setProcessEnvironment(envFormat); m_shellProcess.setProcessEnvironment(env);
m_shellProcess.setReadChannel(QProcess::StandardOutput); m_shellProcess.setReadChannel(QProcess::StandardOutput);
m_shellProcess.start(m_shellPath, arguments); m_shellProcess.start(m_shellPath, arguments);
if (!m_shellProcess.waitForStarted()) if (!m_shellProcess.waitForStarted())