Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: ${(qP)${var}} causes core dump
- X-seq: zsh-workers 9284
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: Re: ${(qP)${var}} causes core dump
- Date: Mon, 10 Jan 2000 10:44:26 +0100 (MET)
- In-reply-to: Peter Stephenson's message of Sun, 09 Jan 2000 18:44:58 +0000
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
Peter Stephenson wrote:
> Tanaka Akira wrote:
> > zsh dumps core as follows.
> >
> > Z(2):akr@is27e1u11% Src/zsh -f
> > is27e1u11% var=a
> > is27e1u11% a=(\* \*)
> > is27e1u11% print -lr ${(qP)${var}}
> > \*
> > \*
> > is27e1u11% print -lr ${(qP)${var}}
> > zsh: segmentation fault (core dumped) Src/zsh -f
>
> The problem seems to be that paramsubst() is setting `copied = 1' after
> retrieving the inner expression. However, the value is then fetched for
> the resulting parameter name `a', and it's only at that point one should
> take account of whether the value has been copied. Hence it was
> erroneously operating directly on the value stored in the array.
>
> Note that you can actually get away with ${(qP)var}, because the shell has
> already been told of the inner lookup.
>
> The following is safe, but Sven can probably tell us if converting the
> unconditional assignment to
> if (!aspar)
> copied = 1;
> would be better.
It might save a little bit of memory but when thinking about possible
future changes, I think I prefer the unconditional assignment.
Bye
Sven
--
Sven Wischnowsky wischnow@xxxxxxxxxxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author