[Libreoffice-commits] core.git: i18nutil/source include/i18nutil

Luboš Luňák l.lunak at collabora.com
Wed Jun 27 07:57:52 UTC 2018


 i18nutil/source/utility/casefolding.cxx |    6 +++---
 include/i18nutil/casefolding.hxx        |    4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

New commits:
commit 87ac4627260bc56825f1283a3a4d88b7f5e466d8
Author: Luboš Luňák <l.lunak at collabora.com>
Date:   Tue Jun 26 11:48:42 2018 +0200

    fix thread-unsafe return of a reference to a static
    
    The Mapping struct is small, so there's no need to reuse it.
    Without this, sc/qa/.../sumif_wildcards.fods sometimes fails with calc
    threading.
    
    Change-Id: If1f370bebe8e1afa14f8645d843a056b6f0dbdea
    Reviewed-on: https://gerrit.libreoffice.org/56449
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lunak at collabora.com>

diff --git a/i18nutil/source/utility/casefolding.cxx b/i18nutil/source/utility/casefolding.cxx
index 0d957c0a91b6..52a8a2a913b9 100644
--- a/i18nutil/source/utility/casefolding.cxx
+++ b/i18nutil/source/utility/casefolding.cxx
@@ -57,7 +57,7 @@ static bool cased_letter(sal_Unicode ch)
 // whenever there are more accents above.
 #define accent_above(ch) (((ch) >= 0x0300 && (ch) <= 0x0314) || ((ch) >= 0x033D && (ch) <= 0x0344) || (ch) == 0x0346 || ((ch) >= 0x034A && (ch) <= 0x034C))
 
-Mapping& casefolding::getConditionalValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, Locale const & aLocale, MappingType nMappingType)
+const Mapping& casefolding::getConditionalValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, Locale const & aLocale, MappingType nMappingType)
 {
         switch(str[pos]) {
         case 0x03a3:
@@ -86,9 +86,9 @@ Mapping& casefolding::getConditionalValue(const sal_Unicode* str, sal_Int32 pos,
         throw RuntimeException();
 }
 
-Mapping& casefolding::getValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, Locale const & aLocale, MappingType nMappingType)
+Mapping casefolding::getValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, Locale const & aLocale, MappingType nMappingType)
 {
-    static Mapping dummy = { 0, 1, { 0, 0, 0 } };
+    Mapping dummy = { 0, 1, { 0, 0, 0 } };
     sal_Int16 address = CaseMappingIndex[str[pos] >> 8];
 
     dummy.map[0] = str[pos];
diff --git a/include/i18nutil/casefolding.hxx b/include/i18nutil/casefolding.hxx
index 5ed59c57cd36..ca29cabb4959 100644
--- a/include/i18nutil/casefolding.hxx
+++ b/include/i18nutil/casefolding.hxx
@@ -74,9 +74,9 @@ class I18NUTIL_DLLPUBLIC casefolding
 {
 public:
     /// @throws css::uno::RuntimeException
-    static Mapping& getValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, css::lang::Locale const & aLocale, MappingType nMappingType);
+    static Mapping getValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, css::lang::Locale const & aLocale, MappingType nMappingType);
     /// @throws css::uno::RuntimeException
-    static Mapping& getConditionalValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, css::lang::Locale const & aLocale, MappingType nMappingType);
+    static const Mapping& getConditionalValue(const sal_Unicode* str, sal_Int32 pos, sal_Int32 len, css::lang::Locale const & aLocale, MappingType nMappingType);
     /// @throws css::uno::RuntimeException
     static sal_Unicode getNextChar(const sal_Unicode *str, sal_Int32& idx, sal_Int32 len, MappingElement& e, css::lang::Locale const & aLocale, MappingType nMappingtype, TransliterationFlags moduleLoaded);
 


More information about the Libreoffice-commits mailing list