[git commit branch/1_26_stable] hush: correct exitcode for unterminated ')' - exitcode2.tests testcase

Denys Vlasenko vda.linux at googlemail.com
Tue Jan 10 15:55:51 UTC 2017


commit: https://git.busybox.net/busybox/commit/?id=9c806db4b744999213ddba755fff847d4525df9f
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/1_26_stable

function                                             old     new   delta
parse_stream                                        2595    2609     +14

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/hush.c | 9 +++++++--
 1 file 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;


More information about the busybox-cvs mailing list