Persist new zero-length universal variables

Because of default initialization to an empty list, code that relies on
set -U __fish_init_3_x was run every time.
This commit is contained in:
Johannes Altmanninger 2019-12-11 11:08:19 +01:00
parent 0b1af1ace4
commit 3f10da0d01

View File

@ -268,8 +268,9 @@ maybe_t<env_var_t::env_var_flags_t> env_universal_t::get_flags(const wcstring &n
void env_universal_t::set_internal(const wcstring &key, const env_var_t &var) { void env_universal_t::set_internal(const wcstring &key, const env_var_t &var) {
ASSERT_IS_LOCKED(lock); ASSERT_IS_LOCKED(lock);
bool new_entry = vars.count(key) == 0;
env_var_t &entry = vars[key]; env_var_t &entry = vars[key];
if (entry != var) { if (new_entry || entry != var) {
entry = var; entry = var;
this->modified.insert(key); this->modified.insert(key);
if (entry.exports()) export_generation += 1; if (entry.exports()) export_generation += 1;