diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-04 21:37:56 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-05 15:43:35 +0100 |
commit | d5f7703abb5a0868fd0e9fa3e8c0509ed99ce330 (patch) | |
tree | 97c5c860cdd190f254cb11e9422126a1aa7c071c | |
parent | 17c5472c5a3eb548e9d06555a8863f83eaee9f26 (diff) | |
download | busybox-w32-d5f7703abb5a0868fd0e9fa3e8c0509ed99ce330.tar.gz busybox-w32-d5f7703abb5a0868fd0e9fa3e8c0509ed99ce330.tar.bz2 busybox-w32-d5f7703abb5a0868fd0e9fa3e8c0509ed99ce330.zip |
bc: rewrite "BOOL * EXPR" idiom as if() statement
function old new delta
bc_program_index 66 64 -2
bc_program_num 1147 1130 -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-19) Total: -19 bytes
text data bss dec hex filename
987619 485 7296 995400 f3048 busybox_old
987600 485 7296 995381 f3035 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | miscutils/bc.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index 148e340a5..d208a0cc6 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
@@ -2031,8 +2031,9 @@ static void bc_num_parseDecimal(BcNum *n, const char *val) | |||
2031 | 2031 | ||
2032 | ptr = strchr(val, '.'); | 2032 | ptr = strchr(val, '.'); |
2033 | 2033 | ||
2034 | // Explicitly test for NULL here to produce either a 0 or 1. | 2034 | n->rdx = 0; |
2035 | n->rdx = (size_t)((ptr != NULL) * ((val + len) - (ptr + 1))); | 2035 | if (ptr != NULL) |
2036 | n->rdx = (size_t)((val + len) - (ptr + 1)); | ||
2036 | 2037 | ||
2037 | if (!zero) { | 2038 | if (!zero) { |
2038 | for (i = len - 1; i < len; ++n->len, i -= 1 + (i && val[i - 1] == '.')) | 2039 | for (i = len - 1; i < len; ++n->len, i -= 1 + (i && val[i - 1] == '.')) |
@@ -2802,7 +2803,7 @@ static BcStatus bc_lex_number(BcLex *l, char start) | |||
2802 | c = buf[++i]; | 2803 | c = buf[++i]; |
2803 | } | 2804 | } |
2804 | 2805 | ||
2805 | len = i + 1 * !last_pt - bslashes * 2; | 2806 | len = i + !last_pt - bslashes * 2; |
2806 | if (len > BC_MAX_NUM) | 2807 | if (len > BC_MAX_NUM) |
2807 | return bc_error("number too long: must be [1, BC_NUM_MAX]"); | 2808 | return bc_error("number too long: must be [1, BC_NUM_MAX]"); |
2808 | 2809 | ||