[git commit] bc: do not disallow powers to N.0000 degree - it's even shorter code
Denys Vlasenko
vda.linux at googlemail.com
Sat Dec 22 20:45:18 UTC 2018
commit: https://git.busybox.net/busybox/commit/?id=2ea8ddf8c245dd160eacf35409572c28345506f7
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
function old new delta
zbc_num_p 440 424 -16
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
miscutils/bc.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 876244b34..d7595ce8e 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -2089,7 +2089,8 @@ static FAST_FUNC BC_STATUS zbc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size
size_t i, powrdx, resrdx;
bool neg;
- if (b->rdx) RETURN_STATUS(bc_error("non integer number"));
+// GNU bc does not allow 2^2.0. We do.
+// if (b->rdx) RETURN_STATUS(bc_error("non integer number"));
if (b->len == 0) {
bc_num_one(c);
@@ -2109,9 +2110,10 @@ static FAST_FUNC BC_STATUS zbc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size
neg = b->neg;
b->neg = false;
-
s = zbc_num_ulong(b, &pow);
+ b->neg = neg;
if (s) RETURN_STATUS(s);
+ // b is not used beyond this point
bc_num_init(©, a->len);
bc_num_copy(©, a);
@@ -2123,7 +2125,6 @@ static FAST_FUNC BC_STATUS zbc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size
scale = a->rdx * pow;
}
- b->neg = neg;
for (powrdx = a->rdx; !(pow & 1); pow >>= 1) {
powrdx <<= 1;
More information about the busybox-cvs
mailing list