From: Denys Vlasenko Date: Sun, 9 Dec 2018 12:33:52 +0000 (+0100) Subject: bc: further simplify string-to-number conversion code X-Git-Tag: 1_30_0~239 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=218ed1cf5466a37ade2a319e9335fb2c1ff19252;p=oweals%2Fbusybox.git bc: further simplify string-to-number conversion code function old new delta bc_program_index 66 64 -2 bc_program_num 983 963 -20 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-22) Total: -22 bytes text data bss dec hex filename 985706 477 7296 993479 f28c7 busybox_old 985684 477 7296 993457 f28b1 busybox_unstripped Signed-off-by: Denys Vlasenko --- diff --git a/miscutils/bc.c b/miscutils/bc.c index c36486414..ca9506929 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -2246,8 +2246,14 @@ static void bc_num_parseDecimal(BcNum *n, const char *val) n->rdx = (size_t)((val + len) - (ptr + 1)); if (!zero) { - for (i = len - 1; i < len; ++n->len, i -= 1 + (i && val[i - 1] == '.')) + i = len - 1; + for (;;) { n->num[n->len] = val[i] - '0'; + ++n->len; + skip_dot: + if ((ssize_t)--i == (ssize_t)-1) break; + if (val[i] == '.') goto skip_dot; + } } }