summaryrefslogtreecommitdiffstats
path: root/util/system
diff options
context:
space:
mode:
Diffstat (limited to 'util/system')
-rw-r--r--util/system/shellcommand.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/util/system/shellcommand.cpp b/util/system/shellcommand.cpp
index 4853b357cf5..48c1717b7e6 100644
--- a/util/system/shellcommand.cpp
+++ b/util/system/shellcommand.cpp
@@ -780,11 +780,16 @@ void TShellCommand::TImpl::Run() {
qargv.push_back(nullptr);
TVector<TString> envHolder;
+ envHolder.reserve(Options_.Environment.size());
+ for (const auto& [name, value] : Options_.Environment) {
+ envHolder.emplace_back(name + '=' + value);
+ }
+
TVector<char*> envp;
- if (!Options_.Environment.empty()) {
- for (auto& env : Options_.Environment) {
- envHolder.emplace_back(env.first + '=' + env.second);
- envp.push_back(const_cast<char*>(envHolder.back().data()));
+ if (!envHolder.empty()) {
+ envp.reserve(envHolder.size() + 1);
+ for (auto& env : envHolder) {
+ envp.push_back(const_cast<char*>(env.data()));
}
envp.push_back(nullptr);
}