summaryrefslogtreecommitdiff
path: root/svl/source/numbers/zforscan.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svl/source/numbers/zforscan.cxx')
-rw-r--r--svl/source/numbers/zforscan.cxx6
1 files changed, 4 insertions, 2 deletions
diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx
index d29ecddb1d16..3687ebc4756b 100644
--- a/svl/source/numbers/zforscan.cxx
+++ b/svl/source/numbers/zforscan.cxx
@@ -39,6 +39,8 @@ using namespace svt;
const sal_Unicode cNoBreakSpace = 0xA0;
const sal_Unicode cNarrowNoBreakSpace = 0x202F;
+const int MaxCntPost = 20; //max dec places allow by rtl_math_round
+
const ::std::vector<OUString> ImpSvNumberformatScan::sEnglishKeyword =
{ // Syntax keywords in English (USA)
//! All keywords MUST be UPPERCASE! In same order as NfKeywordTable
@@ -2735,7 +2737,7 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString )
switch( sStrArray[i][0] )
{
case '0':
- if ( bTimePart && Is100SecZero( i, bDecSep ) )
+ if (bTimePart && Is100SecZero(i, bDecSep) && nCounter < MaxCntPost)
{
bDecSep = true;
nTypeArray[i] = NF_SYMBOLTYPE_DIGIT;
@@ -2743,7 +2745,7 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString )
nCounter++;
i++;
while (i < nStringsCnt &&
- sStrArray[i][0] == '0')
+ sStrArray[i][0] == '0' && nCounter < MaxCntPost)
{
rStr += sStrArray[i];
nTypeArray[i] = NF_SYMBOLTYPE_EMPTY;