Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
SIGSEGV caused by global substitution modifier
- X-seq: zsh-workers 159
- From: Thorsten Meinecke <kaefer@xxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxxx
- Subject: SIGSEGV caused by global substitution modifier
- Date: Thu, 6 Jul 1995 17:21:57 +0200 (MET DST)
- Organization: none. Location: Berlin, Germany
Please have a look at this:
$ zsh-2.6-beta5 -Fc 'FOO=123;echo $FOO:gs//bar/'
bar
$ zsh-2.6-beta10 -fc 'FOO=123;echo $FOO:gs//bar/'
zsh: segmentation fault zsh-2.6-beta10 -fc 'FOO=123;echo $FOO:gs//bar/'
$FOO:gs/// loops forever now, which is especially unpleasant (since
not interruptible) when it occurs in completion control functions like
P.Stephenson's new `multicomp'. This is how I noticed the problem.
You might want to try `!??:gs///' on the command line, too. Don't.
An empty left-hand side of a substitution has a special meaning
("use scan string or previous match"), right? Only if there's no
non-empty scan string or previous match, the left-hand side evaluates
to a null string, and zsh chokes.
There's another (somewhat related) problem: Used on the result of
parameter expansion, empty l strings of substitution modifiers don't
produce the expected result:
$ FOO=1213
$ echo $FOO:s/1/a/:s//b/
b
I've expected `a2b3'. That is what `!:s/1/a/:s//b/' would give.
This "feature" is present at least since zsh-2.4.306-beta. Are there
any rationales behind this?
[zsh-2.6-beta10, Linux 1.2.0, libc 4.5.26, gcc 2.5.8]
--
Thorsten Meinecke
<kaefer@xxxxxxxxxxxxxxx>
Messages sorted by:
Reverse Date,
Date,
Thread,
Author