Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: 3.0.6-pre-4: Sneaky history bug
- X-seq: zsh-workers 6651
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: PATCH: 3.0.6-pre-4: Sneaky history bug
- Date: Wed, 16 Jun 1999 06:47:58 +0000
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
Start with an empty history, as with "zsh -f" or a non-login shell, and
then try to do a "quick substitution" on the nonexistent previous command
using the second character in $histchars (usually '^'). I found myself
in hend() with chwordpos == -2, which did all sorts of fun things when
memcpy was called with chwordpos * sizeof(short) as its third parameter.
I think only Wayne really knows what's going on in the code below, but
this patch at least seems to prevent zsh committing hara-kiri. You end
up with an empty entry in the history, though.
Index: Src/hist.c
===================================================================
@@ -719,7 +719,7 @@
}
#endif
/* get rid of pesky \n which we've already nulled out */
- if (!chline[chwords[chwordpos-2]])
+ if (chwordpos > 1 && !chline[chwords[chwordpos-2]])
chwordpos -= 2;
/* strip superfluous blanks, if desired */
if (isset(HISTREDUCEBLANKS))
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Messages sorted by:
Reverse Date,
Date,
Thread,
Author