summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko2019-11-23 17:25:21 +0100
committerDenys Vlasenko2019-11-23 17:25:21 +0100
commit008413754ba588e6168c3d15280181fb2c331770 (patch)
tree63230968da2a89a25c269264986ee84622de8f4a
parentd3539be8f27b8cbfdfee460fe08299158f08bcd9 (diff)
downloadbusybox-008413754ba588e6168c3d15280181fb2c331770.zip
busybox-008413754ba588e6168c3d15280181fb2c331770.tar.gz
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>
-rw-r--r--miscutils/bc.c5
-rwxr-xr-xtestsuite/bc.tests5
2 files changed, 9 insertions, 1 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 92721d1..c7246ea 100644
--- a/miscutils/bc.c
+++ b/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) {
diff --git a/testsuite/bc.tests b/testsuite/bc.tests
index 3fde60a..179d5d2 100755
--- a/testsuite/bc.tests
+++ b/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" \
"\