ash: fix bad interaction between ash -c '....&' and bash compat
diff --git a/shell/ash.c b/shell/ash.c
index d44de33..55a79a7 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -9189,8 +9189,9 @@
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 @@
static void
pungetc(void)
{
+ /* check is needed for ash -c 'echo 5&' + BASH_COMPAT to work */
+ if (parsenleft < 0)
+ return;
parsenleft++;
parsenextc--;
}