diff options
author | Mark Wielaard <mark@klomp.org> | 2013-05-20 00:18:23 +0200 |
---|---|---|
committer | Fridrich Strba <fridrich@documentfoundation.org> | 2013-05-20 18:54:52 +0000 |
commit | d95456fc4cd10a09ac5d097ba1a06ae884f7f9f1 (patch) | |
tree | 17b54ec0e45f758db0a610318acbce5b4d358de6 | |
parent | d044918751da4bbdf87f7fb12382abf6c4068c07 (diff) |
Fix memory leak in mapToFontConfigLangTag.
FcGetLangs() will return a new FCStrSet that needs to be freed after usage.
Change-Id: Ie7fe0dd160fa59077d6a90878e70d0e034680812
Reviewed-on: https://gerrit.libreoffice.org/3967
Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
-rw-r--r-- | vcl/generic/fontmanager/fontconfig.cxx | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx index dc8dfa7976e1..3e23fc9f21d5 100644 --- a/vcl/generic/fontmanager/fontconfig.cxx +++ b/vcl/generic/fontmanager/fontconfig.cxx @@ -811,11 +811,17 @@ namespace sLangAttrib = OUStringToOString(rLangTag.getBcp47(), RTL_TEXTENCODING_UTF8).toAsciiLowerCase(); if (FcStrSetMember(pLangSet, (const FcChar8*)sLangAttrib.getStr())) + { + FcStrSetDestroy(pLangSet); return sLangAttrib; + } sLangAttrib = OUStringToOString(rLangTag.getLanguageAndScript(), RTL_TEXTENCODING_UTF8).toAsciiLowerCase(); if (FcStrSetMember(pLangSet, (const FcChar8*)sLangAttrib.getStr())) + { + FcStrSetDestroy(pLangSet); return sLangAttrib; + } OString sLang = OUStringToOString(rLangTag.getLanguage(), RTL_TEXTENCODING_UTF8).toAsciiLowerCase(); OString sRegion = OUStringToOString(rLangTag.getCountry(), RTL_TEXTENCODING_UTF8).toAsciiLowerCase(); @@ -824,11 +830,17 @@ namespace { sLangAttrib = sLang + OString('-') + sRegion; if (FcStrSetMember(pLangSet, (const FcChar8*)sLangAttrib.getStr())) + { + FcStrSetDestroy(pLangSet); return sLangAttrib; + } } if (FcStrSetMember(pLangSet, (const FcChar8*)sLang.getStr())) + { + FcStrSetDestroy(pLangSet); return sLang; + } return OString(); #else |