aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/ash.c8
1 files changed, 6 insertions, 2 deletions
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--;
}