[git commit] bc: rewrite bc_num_compare() to be readable

Denys Vlasenko vda.linux at googlemail.com
Tue Dec 18 02:30:23 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=4113e1f2cd2f45a95bcb0920bf2e3ee75b906281
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
bc_num_compare                                        59      51      -8

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

diff --git a/miscutils/bc.c b/miscutils/bc.c
index e5ad0ed86..eaab6cee6 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -1475,10 +1475,20 @@ static void bc_num_subArrays(BcDig *restrict a, BcDig *restrict b,
 
 static ssize_t bc_num_compare(BcDig *restrict a, BcDig *restrict b, size_t len)
 {
-	size_t i;
-	int c = 0;
-	for (i = len - 1; i < len && !(c = a[i] - b[i]); --i);
-	return BC_NUM_NEG(i + 1, c < 0);
+	size_t i = len;
+	for (;;) {
+		int c;
+		if (i == 0)
+			return 0;
+		i--;
+		c = a[i] - b[i];
+		if (c != 0) {
+			i++;
+			if (c < 0)
+				return -i;
+			return i;
+		}
+	}
 }
 
 static ssize_t bc_num_cmp(BcNum *a, BcNum *b)


More information about the busybox-cvs mailing list