summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/amount.cc4
-rw-r--r--src/commodity.h1
-rw-r--r--src/textual.cc1
3 files changed, 5 insertions, 1 deletions
diff --git a/src/amount.cc b/src/amount.cc
index 0244de66..f7b976a0 100644
--- a/src/amount.cc
+++ b/src/amount.cc
@@ -1090,6 +1090,8 @@ bool amount_t::parse(std::istream& in, const parse_flags_t& flags)
bool no_more_commas = false;
bool no_more_periods = false;
+ bool no_migrate_style
+ = commodity().has_flags(COMMODITY_STYLE_NO_MIGRATE);
bool decimal_comma_style
= (commodity_t::decimal_comma_by_default ||
commodity().has_flags(COMMODITY_STYLE_DECIMAL_COMMA));
@@ -1173,7 +1175,7 @@ bool amount_t::parse(std::istream& in, const parse_flags_t& flags)
// is non-NULL.
new_quantity->add_flags(BIGINT_KEEP_PREC);
}
- else if (commodity_) {
+ else if (commodity_ && ! no_migrate_style) {
commodity().add_flags(comm_flags);
if (new_quantity->prec > commodity().precision())
diff --git a/src/commodity.h b/src/commodity.h
index fd09ea46..8e30d56a 100644
--- a/src/commodity.h
+++ b/src/commodity.h
@@ -95,6 +95,7 @@ protected:
#define COMMODITY_SAW_ANN_PRICE_FLOAT 0x400
#define COMMODITY_SAW_ANN_PRICE_FIXATED 0x800
#define COMMODITY_STYLE_TIME_COLON 0x1000
+#define COMMODITY_STYLE_NO_MIGRATE 0x2000
string symbol;
optional<std::size_t> graph_index;
diff --git a/src/textual.cc b/src/textual.cc
index 7ad98809..5abe40b6 100644
--- a/src/textual.cc
+++ b/src/textual.cc
@@ -1128,6 +1128,7 @@ void instance_t::commodity_format_directive(commodity_t&, string format)
trim(format);
amount_t amt;
amt.parse(format);
+ amt.commodity().add_flags(COMMODITY_STYLE_NO_MIGRATE);
VERIFY(amt.valid());
}