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:
Francesco Montorsi 2009-04-12 15:51:43 +00:00
parent 4b37c1bf05
commit 375330ac40
2 changed files with 9 additions and 11 deletions

View File

@ -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

View File

@ -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; \