[git commit] bc: further simplify string-to-number conversion code
Denys Vlasenko
vda.linux at googlemail.com
Sun Dec 9 12:33:52 UTC 2018
commit: https://git.busybox.net/busybox/commit/?id=218ed1cf5466a37ade2a319e9335fb2c1ff19252
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
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 <vda.linux at googlemail.com>
---
miscutils/bc.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
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;
+ }
}
}
More information about the busybox-cvs
mailing list