From: Francesco Montorsi <f18m_cpp217828@yahoo.it>
Date: Sun, 12 Apr 2009 15:51:43 +0000 (+0000)
Subject: do not call setlocale() twice in wxLocale::IsAvailable() and in IMPLEMENT_STRTOX_L_START
X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/375330ac409656a42c0e3e5189070cb2fbc77418?ds=inline

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

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