diff options
Diffstat (limited to 'builtins/command.def')
-rw-r--r-- | builtins/command.def | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/builtins/command.def b/builtins/command.def index 3a14dc6..6e6e5f6 100644 --- a/builtins/command.def +++ b/builtins/command.def @@ -117,13 +117,10 @@ command_builtin (list) if (use_standard_path) { old_path = get_string_value ("PATH"); + /* If old_path is NULL, $PATH is unset. If so, we want to make sure + it's unset after this command completes. */ if (old_path) old_path = savestring (old_path); - else - { - old_path = xmalloc (1); - old_path[0] = '\0'; - } add_unwind_protect ((Function *)restore_path, old_path); standard_path = get_standard_path (); @@ -162,8 +159,13 @@ static void restore_path (var) char *var; { - bind_variable ("PATH", var); - free (var); + if (var) + { + bind_variable ("PATH", var); + free (var); + } + else + unbind_variable ("PATH"); } /* Return a value for PATH that is guaranteed to find all of the standard |