From: Denys Vlasenko Date: Tue, 18 Dec 2018 13:11:35 +0000 (+0100) Subject: bc: shrink zdc_parse_expr() X-Git-Tag: 1_30_0~116 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=a199cc95b726df7023c19fa5130a3b55287e43a2;p=oweals%2Fbusybox.git bc: shrink zdc_parse_expr() function old new delta zdc_parse_expr 656 653 -3 Signed-off-by: Denys Vlasenko --- diff --git a/miscutils/bc.c b/miscutils/bc.c index be198a5fb..a5fcaf3bc 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -4947,24 +4947,29 @@ static BC_STATUS zdc_parse_token(BcParse *p, BcLexType t, uint8_t flags) static BC_STATUS zdc_parse_expr(BcParse *p, uint8_t flags) { - BcStatus s = BC_STATUS_SUCCESS; - BcInst inst; BcLexType t; - for (t = p->l.t.t; !s && t != BC_LEX_EOF; t = p->l.t.t) { - inst = dc_parse_insts[t]; + for (;;) { + BcInst inst; + BcStatus s; + + t = p->l.t.t; + if (t == BC_LEX_EOF) break; + inst = dc_parse_insts[t]; if (inst != BC_INST_INVALID) { bc_parse_push(p, inst); s = zbc_lex_next(&p->l); - } else + } else { s = zdc_parse_token(p, t, flags); + } + if (s) RETURN_STATUS(s); } - if (!s && p->l.t.t == BC_LEX_EOF && (flags & BC_PARSE_NOCALL)) + if (flags & BC_PARSE_NOCALL) bc_parse_push(p, BC_INST_POP_EXEC); - RETURN_STATUS(s); + RETURN_STATUS(BC_STATUS_SUCCESS); } #define zdc_parse_expr(...) (zdc_parse_expr(__VA_ARGS__) COMMA_SUCCESS)