tools/source/rc/resmgr.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
New commits: commit 6ea9062d233e153a5df0e7368af4c6a49d955485 Author: Caolán McNamara <caol...@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 <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@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)
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits