diff options
author | John Wiegley <johnw@newartisans.com> | 2009-02-19 17:20:36 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2009-02-19 17:20:36 -0400 |
commit | 1d85e992cad05ee5ef38f963182332e3d9328c4e (patch) | |
tree | a9cdfb49c6c9c004d96944fa07868414c4fa4849 /src | |
parent | 9805abbf2b38d64308bac536eea40e544e8f7cfe (diff) | |
download | ledger-1d85e992cad05ee5ef38f963182332e3d9328c4e.tar.gz ledger-1d85e992cad05ee5ef38f963182332e3d9328c4e.tar.bz2 ledger-1d85e992cad05ee5ef38f963182332e3d9328c4e.zip |
A key fix to the ways accounts were sorted
Comparing integer < amount was doing the reverse comparison.
Diffstat (limited to 'src')
-rw-r--r-- | src/value.cc | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/value.cc b/src/value.cc index 3b9cfb00..6ea286dc 100644 --- a/src/value.cc +++ b/src/value.cc @@ -747,7 +747,7 @@ bool value_t::is_less_than(const value_t& val) const case INTEGER: return as_long() < val.as_long(); case AMOUNT: - return val.as_amount() < as_long(); + return val.as_amount() >= as_long(); default: break; } @@ -1424,20 +1424,27 @@ bool sort_value_is_less_than(const std::list<sort_value_t>& left_values, while (left_iter != left_values.end() && right_iter != right_values.end()) { - DEBUG("value.sort", - "Comparing " << (*left_iter).value << " < " << (*right_iter).value); - - if ((*left_iter).value < (*right_iter).value) - return ! (*left_iter).inverted; - else if ((*left_iter).value > (*right_iter).value) - return (*left_iter).inverted; + // Don't even try to sort balance values + if (! (*left_iter).value.is_balance() && + ! (*right_iter).value.is_balance()) { + DEBUG("value.sort", + "Comparing " << (*left_iter).value << " < " << (*right_iter).value); + if ((*left_iter).value < (*right_iter).value) { + DEBUG("value.sort", " is less"); + return ! (*left_iter).inverted; + } + else if ((*left_iter).value > (*right_iter).value) { + DEBUG("value.sort", " is greater"); + return (*left_iter).inverted; + } + } left_iter++; right_iter++; } assert(left_iter == left_values.end()); assert(right_iter == right_values.end()); - return false; + return true; } } // namespace ledger |