From: Denys Vlasenko Date: Wed, 5 Dec 2018 18:05:32 +0000 (+0100) Subject: bc: use unsigned division by 10 instead of signed X-Git-Tag: 1_30_0~296 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b3cb90124bcf1786710c200c00530fd3f213929d;p=oweals%2Fbusybox.git bc: use unsigned division by 10 instead of signed function old new delta bc_num_k 990 988 -2 Signed-off-by: Denys Vlasenko --- diff --git a/miscutils/bc.c b/miscutils/bc.c index 07793e9d4..6dc79118a 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -1657,7 +1657,7 @@ static BcStatus bc_num_k(BcNum *restrict a, BcNum *restrict b, a->len < BC_NUM_KARATSUBA_LEN || b->len < BC_NUM_KARATSUBA_LEN) { size_t i, j, len; - int carry; + unsigned carry; bc_num_expand(c, a->len + b->len + 1); @@ -1668,8 +1668,9 @@ static BcStatus bc_num_k(BcNum *restrict a, BcNum *restrict b, carry = 0; for (j = 0; j < a->len; ++j) { - int in = (int) c->num[i + j]; - in += ((int) a->num[j]) * ((int) b->num[i]) + carry; + unsigned in = c->num[i + j]; + in += ((unsigned) a->num[j]) * ((unsigned) b->num[i]) + carry; + // note: compilers prefer _unsigned_ div/const carry = in / 10; c->num[i + j] = (BcDig)(in % 10); }