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



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