diff options
author | Eike Rathke <erack@redhat.com> | 2021-07-01 15:46:01 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-07-03 15:33:56 +0200 |
commit | a7d534639ce3dd6e18f349c33b2bcaa6b43a42a2 (patch) | |
tree | cf53fa35be7bed59cc0b4ab6b89572c85a6f219e | |
parent | fix potential write-after-free in RecentDocsView (diff) | |
download | core-a7d534639ce3dd6e18f349c33b2bcaa6b43a42a2.tar.gz core-a7d534639ce3dd6e18f349c33b2bcaa6b43a42a2.zip |
Resolves: tdf#138432 Use locale's CharClass to parse numeric i18n context
Change-Id: I1828f1b6f93228cd517a6a7bd9ae36584bd801a1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118226
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit d703131d063c41b8baca01830c4c9806f99ab7d2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118190
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit c7d6a4dcfa82387d4ea2445b7af109101f0c365b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118261
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sc/source/core/tool/compiler.cxx | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index 7dd0ca5374a7..274205f5734b 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -2751,6 +2751,10 @@ Label_MaskStateMachine: cGroupSep != cArrayColSep && cGroupSep != cArrayRowSep && cGroupSep != cDecSep && cGroupSep != cDecSepAlt && cGroupSep != cSheetPrefix && cGroupSep != cSheetSep); + // If a numeric context triggered bi18n then use the default locale's + // CharClass, this may accept group separator as well. + const CharClass* pMyCharClass = (ScGlobal::getCharClassPtr()->isDigit( OUString(pStart[nSrcPos]), 0) ? + ScGlobal::getCharClassPtr() : pCharClass); OUStringBuffer aSymbol; mnRangeOpPosInSymbol = -1; FormulaError nErr = FormulaError::NONE; @@ -2761,7 +2765,7 @@ Label_MaskStateMachine: if ( pStart[nSrcPos] == cSheetPrefix && pStart[nSrcPos+1] == '\'' ) aSymbol.append(pStart[nSrcPos++]); - ParseResult aRes = pConv->parseAnyToken( aFormula, nSrcPos, pCharClass, bGroupSeparator); + ParseResult aRes = pConv->parseAnyToken( aFormula, nSrcPos, pMyCharClass, bGroupSeparator); if ( !aRes.TokenType ) { |