[Libreoffice-commits] core.git: tools/source

Caolán McNamara caolanm at redhat.com
Mon Jul 31 15:46:58 UTC 2017


 tools/source/rc/resmgr.cxx |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

New commits:
commit 6ea9062d233e153a5df0e7368af4c6a49d955485
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Jul 31 11:45:07 2017 +0100

    Related: tdf#109427 cache std::locales
    
    Change-Id: I9c2f3372334a70039abbd851568e37a69deeb311
    Reviewed-on: https://gerrit.libreoffice.org/40592
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/tools/source/rc/resmgr.cxx b/tools/source/rc/resmgr.cxx
index 293a78d24ab9..842e58cee3b9 100644
--- a/tools/source/rc/resmgr.cxx
+++ b/tools/source/rc/resmgr.cxx
@@ -91,6 +91,12 @@ namespace Translate
 {
     std::locale Create(const sal_Char* pPrefixName, const LanguageTag& rLocale)
     {
+        static std::unordered_map<OString, std::locale, OStringHash> aCache;
+        OString sIdentifier = rLocale.getGlibcLocaleString(".UTF-8").toUtf8();
+        OString sUnique = sIdentifier + OString(pPrefixName);
+        auto aFind = aCache.find(sUnique);
+        if (aFind != aCache.end())
+            return aFind->second;
         boost::locale::generator gen;
         gen.characters(boost::locale::char_facet);
         gen.categories(boost::locale::message_facet | boost::locale::information_facet);
@@ -100,8 +106,9 @@ namespace Translate
         osl::File::getSystemPathFromFileURL(uri, path);
         gen.add_messages_path(OUStringToOString(path, osl_getThreadTextEncoding()).getStr());
         gen.add_messages_domain(pPrefixName);
-        OString sIdentifier = rLocale.getGlibcLocaleString(".UTF-8").toUtf8();
-        return gen(sIdentifier.getStr());
+        std::locale aRet(gen(sIdentifier.getStr()));
+        aCache[sUnique] = aRet;
+        return aRet;
     }
 
     OUString get(const char* pContextAndId, const std::locale &loc)


More information about the Libreoffice-commits mailing list