Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [zsh 4.0.1-pre-2 bug] named directories disappear



[ moved to -workers ]

Bart Schaefer wrote:

> On Apr 2,  4:48pm, Vincent Lefevre wrote:
> } Subject: [zsh 4.0.1-pre-2 bug] named directories disappear
> }
> } The named directory ~out was defined, but it has disappeared:
> } 
> } greux:~> echo ~out
> } zsh: no such user or named directory: out
> 
>     bug () {
>         hash -d out=$HOME
>         echo ~out
>         local out
>         out=(oops) 
>         ( echo ~out )
> 	: Without the subshell above, this line is never reached
>     }
> 
> The local variable "out" is used by _pids, so that named directory will be
> stomped whenever you complete process IDs.
> 
> On the other hand, if you actually set the global variable "out":
> 
>     unbug () {
> 	out=$HOME
> 	bug
> 	echo ~out
>     }
> 
> The named directory still gets stomped, but is automatically restored any
> time you refer to it.

That's caused by adduserdir() in utils.c.  The test in utils.c:533
succeeds when the local variable is set and then the namedir-entry is
removed.

I'm not sure how we should solve this.  Maybe just make `hash -d x=...'
set the parameter `x', too?  Once one has done the above, one can't
set $x anymore anyway.

Or maybe the other way round?  Use a flag in nameddirtab entries that
says that the entry was added with `hash -d ...' and don't change or
remove such entries when the corresponding parameter is modified?

Bye
 Sven


--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



Messages sorted by: Reverse Date, Date, Thread, Author