do not call setlocale() twice in wxLocale::IsAvailable() and in IMPLEMENT_STRTOX_L_START
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60111 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4b37c1bf05
commit
375330ac40
@ -2517,13 +2517,12 @@ bool wxLocale::IsAvailable(int lang)
|
||||
#elif defined(__UNIX__)
|
||||
|
||||
// Test if setting the locale works, then set it back.
|
||||
const char *oldLocale = wxSetlocale(LC_ALL, "");
|
||||
const char *tmp = wxSetlocaleTryUTF8(LC_ALL, info->CanonicalName);
|
||||
if ( !tmp )
|
||||
const char *oldLocale = wxSetlocaleTryUTF8(LC_ALL, info->CanonicalName);
|
||||
if ( !oldLocale )
|
||||
{
|
||||
// Some C libraries don't like xx_YY form and require xx only
|
||||
tmp = wxSetlocaleTryUTF8(LC_ALL, ExtractLang(info->CanonicalName));
|
||||
if ( !tmp )
|
||||
oldLocale = wxSetlocaleTryUTF8(LC_ALL, ExtractLang(info->CanonicalName));
|
||||
if ( !oldLocale )
|
||||
return false;
|
||||
}
|
||||
// restore the original locale
|
||||
|
@ -282,13 +282,12 @@ int wxToupper_l(const wxUniChar& c, const wxXLocale& loc)
|
||||
#define IMPLEMENT_STRTOX_L_START \
|
||||
wxCHECK(loc.IsOk(), 0); \
|
||||
\
|
||||
/* (Try to) temporary set the locale to 'C' */ \
|
||||
const char *oldLocale = wxSetlocale(LC_NUMERIC, NULL); \
|
||||
const char *tmp = wxSetlocale(LC_NUMERIC, "C"); \
|
||||
if ( !tmp ) \
|
||||
/* (Try to) temporary set the 'C' locale */ \
|
||||
const char *oldLocale = wxSetlocale(LC_NUMERIC, "C"); \
|
||||
if ( !oldLocale ) \
|
||||
{ \
|
||||
/* restore the original locale */ \
|
||||
wxSetlocale(LC_NUMERIC, oldLocale); \
|
||||
/* the current locale was not changed; no need to */ \
|
||||
/* restore the previous one... */ \
|
||||
errno = EINVAL; \
|
||||
/* signal an error (better than nothing) */ \
|
||||
return 0; \
|
||||
|
Loading…
Reference in New Issue
Block a user