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:
@@ -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
|
||||||
|
@@ -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; \
|
||||||
|
Reference in New Issue
Block a user