summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/commodity.cc6
-rw-r--r--test/regress/6DAB9FE3.test10
2 files changed, 14 insertions, 2 deletions
diff --git a/src/commodity.cc b/src/commodity.cc
index 67a86b87..d826feb6 100644
--- a/src/commodity.cc
+++ b/src/commodity.cc
@@ -418,11 +418,13 @@ commodity_t::exchange(const amount_t& amount,
if (commodity.annotated)
current_annotation = &as_annotated_commodity(commodity).details;
- amount_t per_unit_cost = (is_per_unit ? cost : cost / amount).abs();
+ amount_t per_unit_cost =
+ (is_per_unit || amount.is_realzero() ? cost : cost / amount).abs();
DEBUG("commodity.prices.add", "exchange: per-unit-cost = " << per_unit_cost);
- exchange(commodity, per_unit_cost, moment ? *moment : CURRENT_TIME());
+ if (! per_unit_cost.is_realzero())
+ exchange(commodity, per_unit_cost, moment ? *moment : CURRENT_TIME());
cost_breakdown_t breakdown;
breakdown.final_cost = ! is_per_unit ? cost : cost * amount;
diff --git a/test/regress/6DAB9FE3.test b/test/regress/6DAB9FE3.test
new file mode 100644
index 00000000..50b944ae
--- /dev/null
+++ b/test/regress/6DAB9FE3.test
@@ -0,0 +1,10 @@
+reg -E
+<<<
+2009/01/01 Sample
+ assets 0 FOO @ $8.88
+ equity
+>>>1
+09-Jan-01 Sample assets 0 0
+ equity 0 0
+>>>2
+=== 0