Index: source/i18n/digitlst.cpp |
=================================================================== |
--- source/i18n/digitlst.cpp (revision 83674) |
+++ source/i18n/digitlst.cpp (working copy) |
@@ -60,6 +60,18 @@ |
U_NAMESPACE_BEGIN |
+static void |
+loadDecimalChar() { |
+ if (gDecimal == 0) { |
+ char rep[MAX_DIGITS]; |
+ // For machines that decide to change the decimal on you, |
+ // and try to be too smart with localization. |
+ // This normally should be just a '.'. |
+ sprintf(rep, "%+1.1f", 1.0); |
+ gDecimal = rep[2]; |
+ } |
+} |
+ |
// ------------------------------------- |
// default constructor |
@@ -398,15 +410,6 @@ |
} |
DigitList *nonConstThis = const_cast<DigitList *>(this); |
- if (gDecimal == 0) { |
- char rep[MAX_DIGITS]; |
- // For machines that decide to change the decimal on you, |
- // and try to be too smart with localization. |
- // This normally should be just a '.'. |
- sprintf(rep, "%+1.1f", 1.0); |
- gDecimal = rep[2]; |
- } |
- |
if (isZero()) { |
nonConstThis->fDouble = 0.0; |
if (decNumberIsNegative(fDecNumber)) { |
@@ -441,6 +444,7 @@ |
} |
U_ASSERT(uprv_strlen(&s[0]) < MAX_DBL_DIGITS+18); |
+ loadDecimalChar(); |
if (gDecimal != '.') { |
char *decimalPt = strchr(s, '.'); |
if (decimalPt != NULL) { |
@@ -727,6 +731,14 @@ |
sprintf(rep, "%+1.*e", MAX_DBL_DIGITS - 1, source); |
U_ASSERT(uprv_strlen(rep) < sizeof(rep)); |
+ loadDecimalChar(); |
+ if (gDecimal != '.') { |
+ char *decimalPt = strchr(rep, gDecimal); |
+ if (decimalPt != NULL) { |
+ *decimalPt = '.'; |
jungshik at Google
2011/06/07 21:41:30
nit: can you add a comment explaining why you need
Joao da Silva
2011/06/08 11:37:43
Done.
|
+ } |
+ } |
+ |
// Create a decNumber from the string. |
uprv_decNumberFromString(fDecNumber, rep, &fContext); |
uprv_decNumberTrim(fDecNumber); |