Переглянути джерело

bc: fix comparison bug, closes 12336

function                                             old     new   delta
bc_num_cmp                                           249     259     +10

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko 4 роки тому
батько
коміт
008413754b
2 змінених файлів з 9 додано та 1 видалено
  1. 4 1
      miscutils/bc.c
  2. 5 0
      testsuite/bc.tests

+ 4 - 1
miscutils/bc.c

@@ -1465,7 +1465,10 @@ static ssize_t bc_num_cmp(BcNum *a, BcNum *b)
 	b_int = BC_NUM_INT(b);
 	a_int -= b_int;
 
-	if (a_int != 0) return (ssize_t) a_int;
+	if (a_int != 0) {
+		if (neg) return - (ssize_t) a_int;
+		return (ssize_t) a_int;
+	}
 
 	a_max = (a->rdx > b->rdx);
 	if (a_max) {

+ 5 - 0
testsuite/bc.tests

@@ -187,6 +187,11 @@ testing "bc { print 1 }" \
 	"1" \
 	"" "{ print 1 }"
 
+testing "bc comparison 1" \
+	"bc" \
+	"1\n" \
+	"" "-10 < -9"
+
 testing "bc nested loops and breaks" \
 	"bc" \
 	"\