From a451dd9285cc9c220532691f4b3617f3ab467a17 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sun, 13 Apr 2008 05:06:13 -0400 Subject: Fixes to the commodity comparison logic. --- amount.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'amount.cc') diff --git a/amount.cc b/amount.cc index 948c1738..4f07b0b0 100644 --- a/amount.cc +++ b/amount.cc @@ -1793,9 +1793,9 @@ bool compare_amount_commodities::operator()(const amount_t * left, rightprice.reduce(); if (leftprice.commodity() == rightprice.commodity()) { - amount_t val = leftprice - rightprice; - if (val) - return val < 0; + int diff = leftprice.compare(rightprice); + if (diff) + return diff; } else { // Since we have two different amounts, there's really no way // to establish a true sorting order; we'll just do it based @@ -1803,9 +1803,9 @@ bool compare_amount_commodities::operator()(const amount_t * left, leftprice.clear_commodity(); rightprice.clear_commodity(); - amount_t val = leftprice - rightprice; - if (val) - return val < 0; + int diff = leftprice.compare(rightprice); + if (diff) + return diff; } } @@ -1828,6 +1828,8 @@ bool compare_amount_commodities::operator()(const amount_t * left, if (! aleftcomm.tag.empty() && ! arightcomm.tag.empty()) return aleftcomm.tag < arightcomm.tag; + // The two annotated commodities don't differ enough to matter. This + // should make this identical. assert(0); return true; } -- cgit v1.2.3