From 673bd16887c354981120f7ebea44b25b0ab2e41e Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Fri, 30 Nov 2018 20:06:24 +0100 Subject: A leading or trailing group separator character is not a group separator Also a group separator character followed by a non-digit is not. Change-Id: Id57e43fe7692706c5532fb05ad394224265c2750 Reviewed-on: https://gerrit.libreoffice.org/64358 Tested-by: Jenkins Reviewed-by: Eike Rathke (cherry picked from commit a4146c38a07ff51b37d40c2e953f54b0a746a8b7) Reviewed-on: https://gerrit.libreoffice.org/64367 --- .../characterclassification/cclass_unicode_parser.cxx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'i18npool/source') diff --git a/i18npool/source/characterclassification/cclass_unicode_parser.cxx b/i18npool/source/characterclassification/cclass_unicode_parser.cxx index 3c040a5a0085..7af1dd8baf45 100644 --- a/i18npool/source/characterclassification/cclass_unicode_parser.cxx +++ b/i18npool/source/characterclassification/cclass_unicode_parser.cxx @@ -822,8 +822,18 @@ void cclass_Unicode::parseText( ParseResult& r, const OUString& rText, sal_Int32 if ( nMask & ParserFlags::VALUE ) { if (current == cGroupSep) - nParseTokensType |= KParseTokens::GROUP_SEPARATOR_IN_NUMBER; - if ((current == cDecimalSep || (bDecSepAltUsed = (cDecimalSepAlt && current == cDecimalSepAlt))) && + { + if (getFlags(nextChar) & ParserFlags::VALUE_DIGIT) + nParseTokensType |= KParseTokens::GROUP_SEPARATOR_IN_NUMBER; + else + { + // Trailing group separator character is not a + // group separator. + eState = ssStopBack; + } + } + else if ((current == cDecimalSep || + (bDecSepAltUsed = (cDecimalSepAlt && current == cDecimalSepAlt))) && ++nDecSeps > 1) { if (nCodePoints == 2) -- cgit v1.2.3