Skip to content
Snippets Groups Projects
Commit 4c31f60b authored by Lynx Linden's avatar Lynx Linden
Browse files

EXT-7926 FIXED Fixed crash opening About for non-English locales.

Calling std::locale("fr_FR.UTF-8") crashes on Linux and Mac. Or
rather, it throws an exception when it doesn't know the locale and we
didn't handle the exception. I now catch the exception and output an
error rather than crash.

Note, this happened because of change 703f3bcf7069, which made us
actually pass a real locale string instead of just "C". So, we were
never actually supporting a locale for LLStringUtil::formatNumber().
There is therefore an open task of making formatNumber() actually
respect the locale. I'll report a separate JIRA to capture that task.
parent ff03cedb
No related branches found
No related tags found
No related merge requests found
...@@ -994,7 +994,14 @@ void LLStringUtil::formatNumber(std::string& numStr, std::string decimals) ...@@ -994,7 +994,14 @@ void LLStringUtil::formatNumber(std::string& numStr, std::string decimals)
convertToS32 (decimals, intDecimals); convertToS32 (decimals, intDecimals);
if (!sLocale.empty()) if (!sLocale.empty())
{ {
strStream.imbue (std::locale(sLocale.c_str())); // imbue() throws if the locale is unknown! (EXT-7926)
try
{
strStream.imbue(std::locale(sLocale.c_str()));
} catch (const std::exception &e)
{
LL_WARNS_ONCE("Locale") << "Cannot set locale to " << sLocale << LL_ENDL;
}
} }
if (!intDecimals) if (!intDecimals)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment