From 81ba83797240f38769a624a98c1e73ba2f9f9906 Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Sat, 28 Mar 2015 21:24:27 -0700 Subject: 34781: add implicit space after alias expansion of tokens that form words without spacing fixes crash when using completion immediately following such an alias --- ChangeLog | 4 ++++ Src/lex.c | 10 ++++++++++ Test/A02alias.ztst | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5beb1f88f..2527e9e9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,10 @@ * 34804: Src/lex.c: refine 34734 POSIX_ALIAS change to preserve old behavior of [[ ]] conditionals + * 34781: Src/lex.c, Test/A02alias.ztst: add implicit space after + alias expansion of tokens that form words without spacing; fixes + crash when using completion immediately following such an alias + 2015-03-27 Barton E. Schaefer * 34788: Src/lex.c: refine errflag handling in cmd_or_math() diff --git a/Src/lex.c b/Src/lex.c index 2e611707e..5fed2be49 100644 --- a/Src/lex.c +++ b/Src/lex.c @@ -1747,6 +1747,16 @@ checkalias(void) if (an && !an->inuse && ((an->node.flags & ALIAS_GLOBAL) || (incmdpos && tok == STRING) || inalmore)) { + if (!lexstop) { + /* + * Tokens that don't require a space after, get one, + * because they are treated as if preceded by one. + */ + int c = hgetc(); + hungetc(c); + if (!iblank(c)) + inpush(" ", INP_ALIAS, 0); + } inpush(an->text, INP_ALIAS, an); if (an->text[0] == ' ' && !(an->node.flags & ALIAS_GLOBAL)) aliasspaceflag = 1; diff --git a/Test/A02alias.ztst b/Test/A02alias.ztst index fe7155e0b..08163eb52 100644 --- a/Test/A02alias.ztst +++ b/Test/A02alias.ztst @@ -67,7 +67,7 @@ fc -l -2' 2>/dev/null 0:Aliasing reserved tokens >begin ->zsh: command not found: echoend +>end *>*4*{ begin *>*5*{end -- cgit 1.4.1