fix a problem with setlocale() under Windows: with MSVC7 it sometimes returns garbage when passing "": use NULL instead (may need a fix also in wxLocale::IsAvailable)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59972 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2009-04-01 15:20:42 +00:00
parent 34e8a158e5
commit 797a270678

View File

@@ -276,11 +276,14 @@ int wxToupper_l(const wxUniChar& c, const wxXLocale& loc)
case !wxHAS_XLOCALE_SUPPORT... case !wxHAS_XLOCALE_SUPPORT...
*/ */
/*
Note that this code is similar to (a portion of) wxLocale::IsAvailable code
*/
#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 locale to 'C' */ \
const char *oldLocale = wxSetlocale(LC_NUMERIC, ""); \ const char *oldLocale = wxSetlocale(LC_NUMERIC, NULL); \
const char *tmp = wxSetlocale(LC_NUMERIC, "C"); \ const char *tmp = wxSetlocale(LC_NUMERIC, "C"); \
if ( !tmp ) \ if ( !tmp ) \
{ \ { \
@@ -289,9 +292,7 @@ int wxToupper_l(const wxUniChar& c, const wxXLocale& loc)
errno = EINVAL; \ errno = EINVAL; \
/* signal an error (better than nothing) */ \ /* signal an error (better than nothing) */ \
return 0; \ return 0; \
} \ }
\
#define IMPLEMENT_STRTOX_L_END \ #define IMPLEMENT_STRTOX_L_END \
/* restore the original locale */ \ /* restore the original locale */ \