diff options
author | ridiculousfish <corydoras@ridiculousfish.com> | 2015-04-29 17:28:49 -0700 |
---|---|---|
committer | ridiculousfish <corydoras@ridiculousfish.com> | 2015-04-29 17:28:49 -0700 |
commit | f30872a7b55da98c5b027edc4195441743f3bfab (patch) | |
tree | a47c0e32877b7b3a48d70e613476fb588624e9f3 | |
parent | 9c3a9a1e7333feacff0a7d5d08e667b346c97899 (diff) |
Recalculate exported variables when universal variable is erased
Fixes #2046
-rw-r--r-- | env.cpp | 4 | ||||
-rw-r--r-- | tests/test3.in | 4 |
2 files changed, 8 insertions, 0 deletions
@@ -901,6 +901,7 @@ int env_remove(const wcstring &key, int var_mode) !(var_mode & ENV_GLOBAL) && !(var_mode & ENV_LOCAL)) { + bool is_exported = uvars()->get_export(key); erased = uvars() && uvars()->remove(key); if (erased) { @@ -911,6 +912,9 @@ int env_remove(const wcstring &key, int var_mode) ev.arguments.push_back(key); event_fire(&ev); } + + if (is_exported) + mark_changed_exported(); } react_to_variable_change(key); diff --git a/tests/test3.in b/tests/test3.in index 51d545c6..970741d1 100644 --- a/tests/test3.in +++ b/tests/test3.in @@ -149,6 +149,10 @@ else end set -Ue __fish_test_universal_variables_variable_foo + +# Should no longer be in environment (#2046) +env | sgrep __fish_test_universal_variables_variable_foo + set -Ux __fish_test_universal_variables_variable_foo bar set -U __fish_test_universal_variables_variable_foo baz if test (/bin/sh -c 'echo $__fish_test_universal_variables_variable_foo') = baz -a (../fish -c 'echo $__fish_test_universal_variables_variable_foo') = baz |