From: Denis Vlasenko Date: Tue, 25 Nov 2008 01:34:52 +0000 (-0000) Subject: ash: fix bad interaction between ash -c '....&' and bash compat X-Git-Tag: 1_14_0~436 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=16898406724b99ec61d16b38393137bddd6ecc25;p=oweals%2Fbusybox.git ash: fix bad interaction between ash -c '....&' and bash compat --- diff --git a/shell/ash.c b/shell/ash.c index d44de3319..55a79a7a6 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -9189,8 +9189,9 @@ preadbuffer(void) while (g_parsefile->strpush) { #if ENABLE_ASH_ALIAS - if (parsenleft == -1 && g_parsefile->strpush->ap && - parsenextc[-1] != ' ' && parsenextc[-1] != '\t') { + if (parsenleft == -1 && g_parsefile->strpush->ap + && parsenextc[-1] != ' ' && parsenextc[-1] != '\t' + ) { return PEOA; } #endif @@ -9314,6 +9315,9 @@ pfgets(char *line, int len) static void pungetc(void) { + /* check is needed for ash -c 'echo 5&' + BASH_COMPAT to work */ + if (parsenleft < 0) + return; parsenleft++; parsenextc--; }