diff options
author | rubidium <rubidium@openttd.org> | 2007-06-21 15:57:14 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-06-21 15:57:14 +0000 |
commit | a571d7f9540ecbf2f31f379f53f8b35a1a275719 (patch) | |
tree | c53b4cc3afeff70cb86f9c58e0b1f461dc1f9565 /src | |
parent | f7b378df33c78483c6b1fdad7300fa1ad9ad02de (diff) | |
download | openttd-a571d7f9540ecbf2f31f379f53f8b35a1a275719.tar.xz |
(svn r10252) -Fix: never overflow when applying exchange rates before drawing the amount of money.
Diffstat (limited to 'src')
-rw-r--r-- | src/strings.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/strings.cpp b/src/strings.cpp index 5ac7133c4..94c937e4f 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -340,15 +340,17 @@ static char *FormatTinyDate(char *buff, Date date, const char* last) return FormatString(buff, GetStringPtr(STR_DATE_TINY), args, 0, last); } -static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, int64 number, bool compact, const char* last) +static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, Money number, bool compact, const char* last) { const char* multiplier = ""; char buf[40]; char* p; int j; - /* multiply by exchange rate */ - number *= spec->rate; + /* Multiply by exchange rate, but do it safely. */ + CommandCost cs(number); + cs.MultiplyCost(spec->rate); + number = cs.GetCost(); /* convert from negative */ if (number < 0) { |