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

Re: Weird bug with approximate completion



Peter Stephenson wrote:

> Sven Wischnowsky wrote:
> >   sticking it after the first slash will make the completion code use
> >   `/users/foo/(#a...)bin/comp' as the expanded prefix and make it
> >   search in that directory -- which doesn't exists, so it will
> >   generate no matches; should we have some special casing in the
> >   C-code or in the shell code here?
> 
> I don't really understand this since I don't know at what point it hasn't
> been treated as a pattern when it should have been.

When doing pattern completion with a pathname the completion code
still looks only at the pathname component the cursor is in. So it
will split the word into `~/(#a...)/bin/comp' and the prefix
`set'. The it tries to get the real path for the first one and that
gets expanded to `/users/foo/(#a...)/bin/comp', with the `(#a...)'
still in place. Later it uses this path to generate possible matches
by trying to open the directory and reading it. But since there is no
directory with a weird name like `...(#a..)...' it can't open it and
produces no matches.

> > I couldn't reproduce your bug, though (and for me the line you quoted
> > is line number 6239).
> 
> It's now moved to line 6238.  I've fixed the symptoms by turning the
> ncalloc() into a zhalloc(), which I shouldn't have to do, but can't hurt
> since the memory is never freed so it should be using zhalloc() anyway.
> This suggests something fairly sinister is going on.  ncalloc() appears to
> be pointing to the right thing, but the wrong argument appears when it's
> called.

Maybe we should put the test below into tricky.c. One of the things on 
my list is sticking several calls to `DPUTS' in there anyway...

Bye
 Sven

diff -u os/Zle/zle_tricky.c Src/Zle/zle_tricky.c
--- os/Zle/zle_tricky.c	Thu Mar  4 10:59:54 1999
+++ Src/Zle/zle_tricky.c	Thu Mar  4 11:15:13 1999
@@ -5930,6 +5930,8 @@
     if (incompfunc != 1 && findnode(ccstack, cc))
 	return;
 
+    MUSTUSEHEAP("complistflags");
+
     addlinknode(ccstack, cc);
 
     if (incompfunc != 1 && allccs) {

--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



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