Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: Re: 4.0.1 (and 4.1.0) infinite loop with history
- X-seq: zsh-workers 15308
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: PATCH: Re: 4.0.1 (and 4.1.0) infinite loop with history
- Date: Sun, 8 Jul 2001 00:05:48 +0000
- In-reply-to: <1010707231600.ZM16868@xxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <1010707231600.ZM16868@xxxxxxxxxxxxxxxxxxxxxxx>
On Jul 7, 11:15pm, Bart Schaefer wrote:
} Subject: 4.0.1 (and 4.1.0) infinite loop with history
}
} ... all you need to do is fill up the history (so that event
} number 1 will fall off the saved lines) and then give the command `r = 1'.
Happens in 3.0.6 through 3.0.8 as well. And -- good grief -- even in 2.4.
And the history number is a red herring: The loop appears to be attempting
to globally replace the empty string with the empty string, i.e. the `='
is being taken as a degenerate case of OLD=NEW.
Consequently, this should fix it:
Index: Src/builtin.c
===================================================================
diff -c -r1.4 Src/builtin.c
--- Src/builtin.c 2001/06/18 18:01:56 1.4
+++ Src/builtin.c 2001/07/08 00:02:51
@@ -1250,6 +1250,10 @@
while (*argv && equalsplit(*argv, &s)) {
Asgment a = (Asgment) zhalloc(sizeof *a);
+ if (!**argv) {
+ zwarnnam(nam, "invalid replacement pattern: =%s", s, 0);
+ return 1;
+ }
if (!asgf)
asgf = asgl = a;
else {
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
Messages sorted by:
Reverse Date,
Date,
Thread,
Author