Twice uppercase is one too much

In both cases if ToUpperAsciiOrI18nIsAscii() returned
bAsciiUpper=true or the pCharClass->uppercase() was executed and
its CharClass locale differs from ScGlobal::getCharClass(), the
ScGlobal::getCharClass().uppercase() was executed after. If
pCharClass has the same locale as ScGlobal::getCharClass()
(mbCharClassesDiffer==false) that was executed once. In any case
the result is a ScGlobal::getCharClass() locale's uppercase. Do
that only once.

Change-Id: I1928b73b35b50068f96d809d9fa0734ec80a446d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136353
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
This commit is contained in:
Eike Rathke 2022-06-23 23:59:40 +02:00
parent a761a51d9d
commit c5ddccf737

View file

@ -3350,10 +3350,7 @@ bool ScCompiler::ParseSingleReference( const OUString& rName, const OUString* pE
// A named range named e.g. 'num1' is valid with 1k columns, but would become a reference
// when the document is opened later with 16k columns. Resolve the conflict by not
// considering it a reference.
OUString aUpper;
bool bAsciiUpper = ToUpperAsciiOrI18nIsAscii( aUpper, rName );
if (bAsciiUpper || mbCharClassesDiffer)
aUpper = ScGlobal::getCharClass().uppercase( rName );
OUString aUpper( ScGlobal::getCharClass().uppercase( rName ));
mnCurrentSheetTab = aAddr.Tab(); // temporarily set for ParseNamedRange()
if(ParseNamedRange( aUpper, true )) // only check
return false;