summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compare.cc32
-rw-r--r--test/regress/2069.test16
2 files changed, 40 insertions, 8 deletions
diff --git a/src/compare.cc b/src/compare.cc
index 63b85154..121f3014 100644
--- a/src/compare.cc
+++ b/src/compare.cc
@@ -88,15 +88,23 @@ bool compare_items<post_t>::operator()(post_t * left, post_t * right)
post_t::xdata_t& lxdata(left->xdata());
if (! lxdata.has_flags(POST_EXT_SORT_CALC)) {
- bind_scope_t bound_scope(*sort_order.get_context(), *left);
- find_sort_values(lxdata.sort_values, bound_scope);
+ if (sort_order.get_context()) {
+ bind_scope_t bound_scope(*sort_order.get_context(), *left);
+ find_sort_values(lxdata.sort_values, bound_scope);
+ } else {
+ find_sort_values(lxdata.sort_values, *left);
+ }
lxdata.add_flags(POST_EXT_SORT_CALC);
}
post_t::xdata_t& rxdata(right->xdata());
if (! rxdata.has_flags(POST_EXT_SORT_CALC)) {
- bind_scope_t bound_scope(*sort_order.get_context(), *right);
- find_sort_values(rxdata.sort_values, bound_scope);
+ if (sort_order.get_context()) {
+ bind_scope_t bound_scope(*sort_order.get_context(), *right);
+ find_sort_values(rxdata.sort_values, bound_scope);
+ } else {
+ find_sort_values(rxdata.sort_values, *right);
+ }
rxdata.add_flags(POST_EXT_SORT_CALC);
}
@@ -111,15 +119,23 @@ bool compare_items<account_t>::operator()(account_t * left, account_t * right)
account_t::xdata_t& lxdata(left->xdata());
if (! lxdata.has_flags(ACCOUNT_EXT_SORT_CALC)) {
- bind_scope_t bound_scope(*sort_order.get_context(), *left);
- find_sort_values(lxdata.sort_values, bound_scope);
+ if (sort_order.get_context()) {
+ bind_scope_t bound_scope(*sort_order.get_context(), *left);
+ find_sort_values(lxdata.sort_values, bound_scope);
+ } else {
+ find_sort_values(lxdata.sort_values, *left);
+ }
lxdata.add_flags(ACCOUNT_EXT_SORT_CALC);
}
account_t::xdata_t& rxdata(right->xdata());
if (! rxdata.has_flags(ACCOUNT_EXT_SORT_CALC)) {
- bind_scope_t bound_scope(*sort_order.get_context(), *right);
- find_sort_values(rxdata.sort_values, bound_scope);
+ if (sort_order.get_context()) {
+ bind_scope_t bound_scope(*sort_order.get_context(), *right);
+ find_sort_values(rxdata.sort_values, bound_scope);
+ } else {
+ find_sort_values(rxdata.sort_values, *right);
+ }
rxdata.add_flags(ACCOUNT_EXT_SORT_CALC);
}
diff --git a/test/regress/2069.test b/test/regress/2069.test
new file mode 100644
index 00000000..1029644c
--- /dev/null
+++ b/test/regress/2069.test
@@ -0,0 +1,16 @@
+P 2021-01-01 EUR 1.15 USD
+
+2021-01-01 Test 1
+ A 100 USD
+ B
+
+2021-01-01 Test 2
+ A 100 EUR
+ B
+
+test -X USD --sort display_amount reg
+21-Jan-01 Test 2 B -115 USD -115 USD
+21-Jan-01 Test 1 B -100 USD -215 USD
+ A 100 USD -115 USD
+21-Jan-01 Test 2 A 115 USD 0
+end test