diff options
Diffstat (limited to 'basic/source/classes/sb.cxx')
-rw-r--r-- | basic/source/classes/sb.cxx | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx index 74eacdb504c6..75d5fea70640 100644 --- a/basic/source/classes/sb.cxx +++ b/basic/source/classes/sb.cxx @@ -47,6 +47,9 @@ #include <memory> #include <unordered_map> +#include <global.hxx> +#include <unotools/transliterationwrapper.hxx> + #include <com/sun/star/script/ModuleType.hpp> #include <com/sun/star/script/ModuleInfo.hpp> @@ -2059,11 +2062,15 @@ sal_Int32 BasicCollection::implGetIndexForName(std::u16string_view rName) sal_Int32 nIndex = -1; sal_Int32 nCount = xItemArray->Count(); sal_Int32 nNameHash = MakeHashCode( rName ); + + // tdf#144245 - case-insensitive operation for non-ASCII characters + utl::TransliterationWrapper& rTransliteration = SbGlobal::GetTransliteration(); + for( sal_Int32 i = 0 ; i < nCount ; i++ ) { SbxVariable* pVar = xItemArray->Get(i); - if( pVar->GetHashCode() == nNameHash && - pVar->GetName().equalsIgnoreAsciiCase( rName ) ) + if (pVar->GetHashCode() == nNameHash + && rTransliteration.isEqual(pVar->GetName(), OUString(rName))) { nIndex = i; break; |