diff options
author | Denys Vlasenko | 2017-01-03 11:47:50 +0100 |
---|---|---|
committer | Denys Vlasenko | 2017-01-03 11:47:50 +0100 |
commit | b05bcaf29c9008799aedb535cb42d2e60cc4cbb9 (patch) | |
tree | b4ccf5173ce6234a653f5890bb6108af8988b296 /shell | |
parent | ea7d2f6ec0596789fc5b2e3fca3b7a602bfa2c26 (diff) | |
download | busybox-b05bcaf29c9008799aedb535cb42d2e60cc4cbb9.zip busybox-b05bcaf29c9008799aedb535cb42d2e60cc4cbb9.tar.gz |
hush: correct exitcode for unterminated ')' - exitcode2.tests testcase
function old new delta
parse_stream 2595 2609 +14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hush.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/shell/hush.c b/shell/hush.c index fecc892..a56d3b2 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -1137,6 +1137,9 @@ static void syntax_error_unexpected_ch(unsigned lineno UNUSED_PARAM, int ch) char msg[2]; msg[0] = ch; msg[1] = '\0'; +#if HUSH_DEBUG >= 2 + bb_error_msg("hush.c:%u", lineno); +#endif bb_error_msg("syntax error: unexpected %s", ch == EOF ? "EOF" : msg); } @@ -4997,7 +5000,8 @@ static struct pipe *parse_stream(char **pstring, * if we see {, we call parse_group(..., end_trigger='}') * and it will match } earlier (not here). */ syntax_error_unexpected_ch(ch); - goto parse_error; + G.last_exitcode = 2; + goto parse_error1; default: if (HUSH_DEBUG) bb_error_msg_and_die("BUG: unexpected %c\n", ch); @@ -5005,6 +5009,8 @@ static struct pipe *parse_stream(char **pstring, } /* while (1) */ parse_error: + G.last_exitcode = 1; + parse_error1: { struct parse_context *pctx; IF_HAS_KEYWORDS(struct parse_context *p2;) @@ -5038,7 +5044,6 @@ static struct pipe *parse_stream(char **pstring, } while (HAS_KEYWORDS && pctx); o_free(&dest); - G.last_exitcode = 1; #if !BB_MMU if (pstring) *pstring = NULL; |