--- a/intl/locale/src/nsLocaleService.cpp +++ a/intl/locale/src/nsLocaleService.cpp @@ -135,17 +135,25 @@ nsLocaleService::nsLocaleService(void) for( i = 0; i < LocaleListLength; i++ ) { nsresult result; // setlocale( , "") evaluates LC_* and LANG char* lc_temp = setlocale(posix_locale_category[i], ""); CopyASCIItoUTF16(LocaleList[i], category); category_platform = category; category_platform.AppendLiteral("##PLATFORM"); - if (lc_temp != nullptr) { + + bool lc_temp_valid = lc_temp != nullptr; + +#if defined(MOZ_WIDGET_ANDROID) + // Treat the "C" env as nothing useful. See Bug 1095298. + lc_temp_valid = lc_temp_valid && strcmp(lc_temp, "C") != 0; +#endif + + if (lc_temp_valid) { result = nsPosixLocale::GetXPLocale(lc_temp, xpLocale); CopyASCIItoUTF16(lc_temp, platformLocale); } else { if ( lang == nullptr ) { platformLocale.AssignLiteral("en_US"); result = nsPosixLocale::GetXPLocale("en-US", xpLocale); } else { CopyASCIItoUTF16(lang, platformLocale);