From 375330ac409656a42c0e3e5189070cb2fbc77418 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Sun, 12 Apr 2009 15:51:43 +0000 Subject: [PATCH] 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 --- src/common/intl.cpp | 9 ++++----- src/common/xlocale.cpp | 11 +++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/common/intl.cpp b/src/common/intl.cpp index ce5a0adfbf..0960dfc57b 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -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 diff --git a/src/common/xlocale.cpp b/src/common/xlocale.cpp index 0864e50c26..96c8a558ca 100644 --- a/src/common/xlocale.cpp +++ b/src/common/xlocale.cpp @@ -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; \ -- 2.45.2