diff options
Diffstat (limited to 'util/system/shellcommand.cpp')
| -rw-r--r-- | util/system/shellcommand.cpp | 13 |
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); } |
