From 7a4bbab6f7057ccd789dd1db0a84bfab7a27e301 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Mon, 27 May 2024 09:14:25 +0200 Subject: [PATCH] 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 --- src/libs/3rdparty/libptyqt/unixptyprocess.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/libs/3rdparty/libptyqt/unixptyprocess.cpp b/src/libs/3rdparty/libptyqt/unixptyprocess.cpp index e9ec1d590f6..d76349a49e2 100644 --- a/src/libs/3rdparty/libptyqt/unixptyprocess.cpp +++ b/src/libs/3rdparty/libptyqt/unixptyprocess.cpp @@ -190,16 +190,17 @@ bool UnixPtyProcess::startProcess(const QString &shellPath, m_readMasterNotify->disconnect(); }); - QStringList varNames; - for (const QString &line : std::as_const(environment)) - varNames.append(line.split("=").first()); - - QProcessEnvironment envFormat; - for (const QString &line : std::as_const(environment)) - envFormat.insert(line.split("=").first(), line.split("=").last()); + QProcessEnvironment env; + for (const QString &envEntry : environment) { + const int idx = envEntry.indexOf('='); + if (idx != -1) + env.insert(envEntry.left(idx), envEntry.mid(idx + 1)); + else + env.insert(envEntry, QString()); + } m_shellProcess.setWorkingDirectory(workingDir); - m_shellProcess.setProcessEnvironment(envFormat); + m_shellProcess.setProcessEnvironment(env); m_shellProcess.setReadChannel(QProcess::StandardOutput); m_shellProcess.start(m_shellPath, arguments); if (!m_shellProcess.waitForStarted())