shell/math: code shrink

function                                             old     new   delta
evaluate_string                                     1498    1491      -7

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2023-06-18 19:13:22 +02:00
parent 8309c9159f
commit 7701b526a7

View File

@ -363,7 +363,6 @@ arith_apply(arith_state_t *math_state, operator op, var_or_num_t *numstack, var_
/* Pop numstack */ /* Pop numstack */
NUMSTACKPTR = top_of_stack; /* this decrements NUMSTACKPTR */ NUMSTACKPTR = top_of_stack; /* this decrements NUMSTACKPTR */
top_of_stack--; /* now points to left side */
if (math_state->evaluation_disabled) { if (math_state->evaluation_disabled) {
dbg("binary op %02x skipped", op); dbg("binary op %02x skipped", op);
@ -375,6 +374,7 @@ arith_apply(arith_state_t *math_state, operator op, var_or_num_t *numstack, var_
*/ */
} }
top_of_stack--; /* now points to left side */
right_side_val = rez; right_side_val = rez;
rez = top_of_stack->val; rez = top_of_stack->val;
if (op == TOK_BOR || op == TOK_OR_ASSIGN) if (op == TOK_BOR || op == TOK_OR_ASSIGN)
@ -703,9 +703,12 @@ evaluate_string(arith_state_t *math_state, const char *expr)
if (isdigit(*expr)) { if (isdigit(*expr)) {
/* Number */ /* Number */
char *end;
numstackptr->var_name = NULL; numstackptr->var_name = NULL;
errno = 0; errno = 0;
numstackptr->val = strto_arith_t(expr, (char**) &expr); end = (char*) expr; /* separate variable to go on stack */
numstackptr->val = strto_arith_t(expr, &end);
expr = end;
dbg("[%d] val:%lld", (int)(numstackptr - numstack), numstackptr->val); dbg("[%d] val:%lld", (int)(numstackptr - numstack), numstackptr->val);
/* A number can't be followed by another number, or a variable name. /* A number can't be followed by another number, or a variable name.
* We'd catch this later anyway, but this would require numstack[] * We'd catch this later anyway, but this would require numstack[]