From 4a4e8866bd0745046724bcf69886cf33cb32b306 Mon Sep 17 00:00:00 2001 From: Ye ShanShan Date: Sun, 7 Apr 2024 11:40:18 +0800 Subject: [PATCH] fix: missing splitter for env Using QStringList's `join` instead of QString's `append` to package envrionments. --- src/dbus/applicationservice.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/dbus/applicationservice.cpp b/src/dbus/applicationservice.cpp index 0f8a49e..85dde13 100644 --- a/src/dbus/applicationservice.cpp +++ b/src/dbus/applicationservice.cpp @@ -34,21 +34,19 @@ void ApplicationService::appendExtraEnvironments(QVariantMap &runtimeOptions) const noexcept { - QString oldEnv; - if (auto it = runtimeOptions.find("env"); it != runtimeOptions.cend()) { - oldEnv = it->value(); - } - + QStringList envs; const QString &env = environ(); - if (!env.isEmpty()) { - //NOTE: prepend this directly may lead some error - oldEnv.prepend(env); + if (!env.isEmpty()) + envs.append(env); + + if (auto it = runtimeOptions.find("env"); it != runtimeOptions.cend()) { + envs.append(it->value()); } // NOTE: dde-dock need this environment variable for now, maybe we could remove it after we finish refactoring dde-shell. - oldEnv.append(QString{"GIO_LAUNCHED_DESKTOP_FILE=%1;"}.arg(m_desktopSource.sourcePath())); + envs.append(QString{"GIO_LAUNCHED_DESKTOP_FILE=%1"}.arg(m_desktopSource.sourcePath())); - runtimeOptions.insert("env", oldEnv); + runtimeOptions.insert("env", envs.join(';')); } ApplicationService::ApplicationService(DesktopFile source,