diff options
Diffstat (limited to 'shell')
| -rw-r--r-- | shell/math.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/shell/math.c b/shell/math.c index c1bf324f8..748c3b3ad 100644 --- a/shell/math.c +++ b/shell/math.c | |||
| @@ -518,7 +518,7 @@ static const char op_tokens[] ALIGN1 = { | |||
| 518 | '(', 0, TOK_LPAREN, | 518 | '(', 0, TOK_LPAREN, |
| 519 | 0 | 519 | 0 |
| 520 | }; | 520 | }; |
| 521 | #define ptr_to_rparen (&op_tokens[sizeof(op_tokens)-7]) | 521 | #define END_POINTER (&op_tokens[sizeof(op_tokens)-1]) |
| 522 | 522 | ||
| 523 | #if ENABLE_FEATURE_SH_MATH_BASE | 523 | #if ENABLE_FEATURE_SH_MATH_BASE |
| 524 | static arith_t strto_arith_t(const char *nptr, char **endptr) | 524 | static arith_t strto_arith_t(const char *nptr, char **endptr) |
| @@ -653,13 +653,13 @@ evaluate_string(arith_state_t *math_state, const char *expr) | |||
| 653 | * are to be applied in order. At the end, there should be a final | 653 | * are to be applied in order. At the end, there should be a final |
| 654 | * result on the integer stack */ | 654 | * result on the integer stack */ |
| 655 | 655 | ||
| 656 | if (expr != ptr_to_rparen + 1) { | 656 | if (expr != END_POINTER) { |
| 657 | /* If we haven't done so already, | 657 | /* If we haven't done so already, |
| 658 | * append a closing right paren | 658 | * append a closing right paren |
| 659 | * and let the loop process it */ | 659 | * and let the loop process it */ |
| 660 | expr = ptr_to_rparen; | 660 | expr = END_POINTER; |
| 661 | //bb_error_msg("expr=')'"); | 661 | op = TOK_RPAREN; |
| 662 | goto tok_find; | 662 | goto tok_found1; |
| 663 | } | 663 | } |
| 664 | /* At this point, we're done with the expression */ | 664 | /* At this point, we're done with the expression */ |
| 665 | if (numstackptr != numstack + 1) { | 665 | if (numstackptr != numstack + 1) { |
| @@ -725,7 +725,7 @@ evaluate_string(arith_state_t *math_state, const char *expr) | |||
| 725 | } | 725 | } |
| 726 | } | 726 | } |
| 727 | } | 727 | } |
| 728 | tok_find: | 728 | |
| 729 | p = op_tokens; | 729 | p = op_tokens; |
| 730 | while (1) { | 730 | while (1) { |
| 731 | /* Compare expr to current op_tokens[] element */ | 731 | /* Compare expr to current op_tokens[] element */ |
| @@ -792,7 +792,6 @@ evaluate_string(arith_state_t *math_state, const char *expr) | |||
| 792 | * "applied" in this way. | 792 | * "applied" in this way. |
| 793 | */ | 793 | */ |
| 794 | prec = PREC(op); | 794 | prec = PREC(op); |
| 795 | //bb_error_msg("prec:%02x", prec); | ||
| 796 | if ((prec > 0 && prec < UNARYPREC) || prec == SPEC_PREC) { | 795 | if ((prec > 0 && prec < UNARYPREC) || prec == SPEC_PREC) { |
| 797 | /* not left paren or unary */ | 796 | /* not left paren or unary */ |
| 798 | if (lasttok != TOK_NUM) { | 797 | if (lasttok != TOK_NUM) { |
