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.
This commit is contained in:
John Wiegley 2008-07-17 20:52:20 -04:00
parent c673b96691
commit 6cb519231f

View file

@ -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.