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

Re: COMPLETE_IN_WORD dumps core if reserved word match



Thorsten Meinecke wrote:
> I wrote, 
> Subject: COMPLETE_IN_WORD dumps core if built-in functions match,
> 
> >   Starting program: /u/home/kaefer/wrk/zsh/zsh-2.6-beta10/Src/./zsh -f
> >   aglaia:~/wrk/zsh/zsh-2.6-beta10/Src> setopt autolist completeinword 
> >   aglaia:~/wrk/zsh/zsh-2.6-beta10/Src> rt
> >                                         ^
> > [cursor position is here, and completion requested]
> > 
> >   Program received signal SIGSEGV, Segmentation fault.
> >   0x804ed39 in addmatch (s=0x8059424 "epeat", t=0x8059424 "epeat")
> >       at zle_tricky.c:1524
> >   1524                *e = '\0';
> >   (gdb)
> > 
> > The obvious way around (at least for GCC) is to recompile with
> > -fwritable-strings.
> 
> Digging a little further shows that only the list of 24 reserved
> words is subject to this problem. We're attempting to modify
> "string constants", which can't be done portably.
> 
> The fix is to copy these words, at the expense of a-hundred-and-a-
> few bytes increased memory usage, as it was done in earlier releases.

I think it would be better to modify the code which uses the end-of-string
marks. I do not like new ztrdups. Also it requires some additional CPU time as
well (malloc can be quite slow, especially with zsh-mem, which queues signals
befor each malloc). The proper solution shouldn't be too difficult, be I have
some other things to do now.

Zoltan



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