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__) #elif defined(__UNIX__)
// Test if setting the locale works, then set it back. // Test if setting the locale works, then set it back.
const char *oldLocale = wxSetlocale(LC_ALL, ""); const char *oldLocale = wxSetlocaleTryUTF8(LC_ALL, info->CanonicalName);
const char *tmp = wxSetlocaleTryUTF8(LC_ALL, info->CanonicalName); if ( !oldLocale )
if ( !tmp )
{ {
// Some C libraries don't like xx_YY form and require xx only // Some C libraries don't like xx_YY form and require xx only
tmp = wxSetlocaleTryUTF8(LC_ALL, ExtractLang(info->CanonicalName)); oldLocale = wxSetlocaleTryUTF8(LC_ALL, ExtractLang(info->CanonicalName));
if ( !tmp ) if ( !oldLocale )
return false; return false;
} }
// restore the original locale // restore the original locale

View File

@@ -282,13 +282,12 @@ int wxToupper_l(const wxUniChar& c, const wxXLocale& loc)
#define IMPLEMENT_STRTOX_L_START \ #define IMPLEMENT_STRTOX_L_START \
wxCHECK(loc.IsOk(), 0); \ wxCHECK(loc.IsOk(), 0); \
\ \
/* (Try to) temporary set the locale to 'C' */ \ /* (Try to) temporary set the 'C' locale */ \
const char *oldLocale = wxSetlocale(LC_NUMERIC, NULL); \ const char *oldLocale = wxSetlocale(LC_NUMERIC, "C"); \
const char *tmp = wxSetlocale(LC_NUMERIC, "C"); \ if ( !oldLocale ) \
if ( !tmp ) \
{ \ { \
/* restore the original locale */ \ /* the current locale was not changed; no need to */ \
wxSetlocale(LC_NUMERIC, oldLocale); \ /* restore the previous one... */ \
errno = EINVAL; \ errno = EINVAL; \
/* signal an error (better than nothing) */ \ /* signal an error (better than nothing) */ \
return 0; \ return 0; \