[git commit] bc: do not yet allow 2^2.1

Denys Vlasenko vda.linux at googlemail.com
Sat Dec 22 22:14:48 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=1acac7f9c596cd447d197039216f7b55c9ee3ab3
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 miscutils/bc.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/miscutils/bc.c b/miscutils/bc.c
index ae5105b01..8cd67b0f5 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -2095,8 +2095,10 @@ static FAST_FUNC BC_STATUS zbc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size
 	size_t i, powrdx, resrdx;
 	bool neg;
 
-// GNU bc does not allow 2^2.0. We do.
-//	if (b->rdx) RETURN_STATUS(bc_error("non integer number"));
+	// GNU bc does not allow 2^2.0 - we do
+	for (i = 0; i < b->rdx; i++)
+		if (b->num[i] != 0)
+			RETURN_STATUS(bc_error("not an integer"));
 
 	if (b->len == 0) {
 		bc_num_one(c);
@@ -2505,7 +2507,7 @@ static BC_STATUS zdc_num_modexp(BcNum *a, BcNum *b, BcNum *c, BcNum *restrict d)
 	if (c->len == 0)
 		RETURN_STATUS(bc_error("divide by zero"));
 	if (a->rdx || b->rdx || c->rdx)
-		RETURN_STATUS(bc_error("non integer number"));
+		RETURN_STATUS(bc_error("not an integer"));
 	if (b->neg)
 		RETURN_STATUS(bc_error("negative number"));
 


More information about the busybox-cvs mailing list