X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e766c8a9ad51ecf73e8f1641992f1007ee9e5e0a..af4088f1bebd177c33a085f892062fd1d5c64d88:/src/common/wxchar.cpp diff --git a/src/common/wxchar.cpp b/src/common/wxchar.cpp index d404a98cb8..7e3c343b5e 100644 --- a/src/common/wxchar.cpp +++ b/src/common/wxchar.cpp @@ -41,10 +41,10 @@ #endif #if defined(__WIN32__) && defined(wxNEED_WX_CTYPE_H) -#include -#include -#include -#include + #include + #include + #include + #include #endif #if wxUSE_WCHAR_T @@ -58,11 +58,8 @@ size_t WXDLLEXPORT wxMB2WC(wchar_t *buf, const char *psz, size_t n) return mbstowcs(buf, psz, n); } - // NB: GNU libc5 wcstombs() is completely broken, don't use it (it doesn't - // honor the 3rd parameter, thus it will happily crash here). -#if wxUSE_WCSRTOMBS - // don't know if it's really needed (or if we can pass NULL), but better safe - // than quick + // assume that we have mbsrtowcs() too if we have wcsrtombs() +#ifdef HAVE_WCSRTOMBS mbstate_t mbstate; return mbsrtowcs((wchar_t *) NULL, &psz, 0, &mbstate); #else // !GNU libc @@ -81,18 +78,14 @@ size_t WXDLLEXPORT wxWC2MB(char *buf, const wchar_t *pwz, size_t n) return wcstombs(buf, pwz, n); } - // NB: GNU libc5 wcstombs() is completely broken, don't use it (it doesn't - // honor the 3rd parameter, thus it will happily crash here). -#if wxUSE_WCSRTOMBS - // don't know if it's really needed (or if we can pass NULL), but better safe - // than quick +#if HAVE_WCSRTOMBS mbstate_t mbstate; return wcsrtombs((char *) NULL, &pwz, 0, &mbstate); #else // !GNU libc return wcstombs((char *) NULL, pwz, 0); #endif // GNU } -#endif +#endif // wxUSE_WCHAR_T bool WXDLLEXPORT wxOKlibc() { @@ -105,7 +98,8 @@ bool WXDLLEXPORT wxOKlibc() // this is UTF-8 allright, check whether that's what we want char *cur_locale = setlocale(LC_CTYPE, NULL); if ((strlen(cur_locale) < 4) || - (strcasecmp(cur_locale + strlen(cur_locale) - 4, "utf8"))) { + (strcasecmp(cur_locale + strlen(cur_locale) - 4, "utf8")) || + (strcasecmp(cur_locale + strlen(cur_locale) - 5, "utf-8"))) { // nope, don't use libc conversion return FALSE; }