From 830b3bf161d612512798daf4f06e89d2bbf2561d Mon Sep 17 00:00:00 2001 From: sb Date: Fri, 18 Dec 2009 16:03:28 +0100 Subject: sb118: allow environment variables to be unset in osl_executeProcess (undocumented feature for now, and OS/2 code is not yet adapted) --- sal/osl/w32/procimpl.cxx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'sal/osl/w32/procimpl.cxx') diff --git a/sal/osl/w32/procimpl.cxx b/sal/osl/w32/procimpl.cxx index 379caeb5affc..5339e539e291 100644 --- a/sal/osl/w32/procimpl.cxx +++ b/sal/osl/w32/procimpl.cxx @@ -172,8 +172,7 @@ namespace /* private */ { rtl::OUString env_var = rtl::OUString(env_vars[i]); - if ((env_var.getLength() == 0) || - (env_var.indexOf(NAME_VALUE_SEPARATOR) == -1)) + if (env_var.getLength() == 0) return false; iterator_pair_t iter_pair = std::equal_range( @@ -182,10 +181,17 @@ namespace /* private */ env_var, less_environment_variable()); - if (iter_pair.first != iter_pair.second) // found - *iter_pair.first = env_var; - else // not found - merged_env->insert(iter_pair.first, env_var); + if (env_var.indexOf(NAME_VALUE_SEPARATOR) == -1) + { + merged_env->erase(iter_pair.first, iter_pair.second); + } + else + { + if (iter_pair.first != iter_pair.second) // found + *iter_pair.first = env_var; + else // not found + merged_env->insert(iter_pair.first, env_var); + } } return true; } -- cgit