summaryrefslogtreecommitdiff
path: root/env/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'env/common.c')
-rw-r--r--env/common.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/env/common.c b/env/common.c
index 8d47d726059..6cba7f1c187 100644
--- a/env/common.c
+++ b/env/common.c
@@ -401,7 +401,15 @@ int env_set_default_vars(int nvars, char * const vars[], int flags)
* Special use-case: import from default environment
* (and use \0 as a separator)
*/
- flags |= H_NOCLEAR | H_DEFAULT;
+
+ /*
+ * When vars are passed remove variables that are not in
+ * the default environment.
+ */
+ if (!nvars)
+ flags |= H_NOCLEAR;
+
+ flags |= H_DEFAULT;
return himport_r(&env_htab, default_environment,
sizeof(default_environment), '\0',
flags, 0, nvars, vars);