From 6cb519231fba70ae5b84c1ae60aa8a653b14aa2e Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Thu, 17 Jul 2008 20:52:20 -0400 Subject: [PATCH] If AMOUNT_PARSE_NO_MIGRATE is set, do not set a commodity's precision even if this is the first time a commodity is being seen. The reason is that it's quite possible (especially in bug reports) for the cost of a priced transaction to contain the first occurrence of a commodity. --- amount.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/amount.cc b/amount.cc index 69d26477..1ac2f407 100644 --- a/amount.cc +++ b/amount.cc @@ -1170,14 +1170,13 @@ void amount_t::parse(std::istream& in, unsigned char flags) // Set the commodity's flags and precision accordingly - if (newly_created || ! (flags & AMOUNT_PARSE_NO_MIGRATE)) { + if (! (flags & AMOUNT_PARSE_NO_MIGRATE)) { commodity().add_flags(comm_flags); if (quantity->prec > commodity().precision()) commodity().set_precision(quantity->prec); - } - - if (flags & AMOUNT_PARSE_NO_MIGRATE) + } else { quantity->flags |= BIGINT_KEEP_PREC; + } // Now we have the final number. Remove commas and periods, if // necessary.