aboutsummaryrefslogtreecommitdiff
path: root/miscutils/bc.c
diff options
context:
space:
mode:
Diffstat (limited to 'miscutils/bc.c')
-rw-r--r--miscutils/bc.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index e5726ca40..6d8e2d991 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -4121,18 +4121,15 @@ static BC_STATUS zbc_parse_return(void)
4121 if (s) RETURN_STATUS(s); 4121 if (s) RETURN_STATUS(s);
4122 4122
4123 t = p->lex; 4123 t = p->lex;
4124 if (t == XC_LEX_NLINE || t == BC_LEX_SCOLON) 4124 if (t == XC_LEX_NLINE || t == BC_LEX_SCOLON || t == BC_LEX_RBRACE)
4125 xc_parse_push(BC_INST_RET0); 4125 xc_parse_push(BC_INST_RET0);
4126 else { 4126 else {
4127 bool paren = (t == BC_LEX_LPAREN); 4127 s = zbc_parse_expr(0);
4128 s = bc_parse_expr_empty_ok(0);
4129 if (s == BC_STATUS_PARSE_EMPTY_EXP) {
4130 xc_parse_push(BC_INST_RET0);
4131 s = zxc_lex_next();
4132 }
4133 if (s) RETURN_STATUS(s); 4128 if (s) RETURN_STATUS(s);
4134 4129
4135 if (!paren || p->lex_last != BC_LEX_RPAREN) { 4130 if (t != BC_LEX_LPAREN // "return EXPR", no ()
4131 || p->lex_last != BC_LEX_RPAREN // example: "return (a) + b"
4132 ) {
4136 s = zbc_POSIX_requires("parentheses around return expressions"); 4133 s = zbc_POSIX_requires("parentheses around return expressions");
4137 if (s) RETURN_STATUS(s); 4134 if (s) RETURN_STATUS(s);
4138 } 4135 }