Revert "remove more ENV_NULL references"

This reverts commit 591449aba7.
It was meant for the major branch.
This commit is contained in:
Kurtis Rader 2017-08-13 14:57:31 -07:00
parent 9f4f9545c1
commit a2f507f1c8
2 changed files with 11 additions and 1 deletions

View file

@ -293,6 +293,8 @@ static int my_env_set(const wchar_t *cmd, const wchar_t *key, const wcstring_lis
if (retval != STATUS_CMD_OK) return retval;
}
// We don't check `val->empty()` because an array var with a single empty string will be
// "empty". A truly empty array var is set to the special value `ENV_NULL`.
auto val = list_to_array_val(list);
retval = env_set(key, val->c_str(), scope | ENV_USER);
switch (retval) {

View file

@ -1172,8 +1172,16 @@ static void expand_home_directory(wcstring &input) {
if (username.empty()) {
// Current users home directory.
home = env_get(L"HOME");
// If home is either missing or empty,
// treat it like an empty list.
// $HOME is defined to be a _path_,
// and those cannot be empty.
//
// We do not expand a string-empty var differently,
// because that results in bogus paths
// - ~/foo turns into /foo.
if (home.missing_or_empty()) {
input.clear();
input = ENV_NULL;
return;
}
tail_idx = 1;