bc: rewrite "BOOL * EXPR" idiom as if() statement
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 4 Dec 2018 20:37:56 +0000 (21:37 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 5 Dec 2018 14:43:35 +0000 (15:43 +0100)
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>
miscutils/bc.c

index 148e340a5c3013fe85f3febca6405652c4678368..d208a0cc6aee29eb7e1abe40eb86e8aebc125088 100644 (file)
@@ -2031,8 +2031,9 @@ static void bc_num_parseDecimal(BcNum *n, const char *val)
 
        ptr = strchr(val, '.');
 
-       // Explicitly test for NULL here to produce either a 0 or 1.
-       n->rdx = (size_t)((ptr != NULL) * ((val + len) - (ptr + 1)));
+       n->rdx = 0;
+       if (ptr != NULL)
+               n->rdx = (size_t)((val + len) - (ptr + 1));
 
        if (!zero) {
                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)
                c = buf[++i];
        }
 
-       len = i + 1 * !last_pt - bslashes * 2;
+       len = i + !last_pt - bslashes * 2;
        if (len > BC_MAX_NUM)
                return bc_error("number too long: must be [1, BC_NUM_MAX]");