summaryrefslogtreecommitdiff
path: root/sal/osl/w32/procimpl.cxx
diff options
context:
space:
mode:
authorsb <sb@openoffice.org>2009-12-18 16:03:28 +0100
committersb <sb@openoffice.org>2009-12-18 16:03:28 +0100
commit830b3bf161d612512798daf4f06e89d2bbf2561d (patch)
treebdef398ca670866a4bb1707f6c6abbd11c9a1d54 /sal/osl/w32/procimpl.cxx
parent0d8e2caa55d25f0e7040a55b96c93f37fb52a8f3 (diff)
sb118: allow environment variables to be unset in osl_executeProcess (undocumented feature for now, and OS/2 code is not yet adapted)
Diffstat (limited to 'sal/osl/w32/procimpl.cxx')
-rw-r--r--sal/osl/w32/procimpl.cxx18
1 files changed, 12 insertions, 6 deletions
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;
}