X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f1b63efe8993c6c0460354bc2da7331526d43efa..b04237742c51e022af8ca8fe8933437734f392a3:/include/wx/wxcrt.h diff --git a/include/wx/wxcrt.h b/include/wx/wxcrt.h index ca5c694e66..662ea9758d 100644 --- a/include/wx/wxcrt.h +++ b/include/wx/wxcrt.h @@ -182,14 +182,33 @@ inline size_t wxStrlen(const wxString& s) { return s.length(); } inline size_t wxStrlen(const wxCStrData& s) { return s.AsString().length(); } // this is a function new in 2.9 so we don't care about backwards compatibility and -// so don't need to support wchar_t/char overloads -#if defined(wxCRT_StrnlenA) && defined(wxCRT_StrnlenW) +// so don't need to support wxCharBuffer/wxWCharBuffer overloads +#if defined(wxCRT_StrnlenA) inline size_t wxStrnlen(const char *str, size_t maxlen) { return wxCRT_StrnlenA(str, maxlen); } +#else +inline size_t wxStrnlen(const char *str, size_t maxlen) +{ + size_t n; + for ( n = 0; n < maxlen; n++ ) + if ( !str[n] ) + break; + + return n; +} +#endif + +#if defined(wxCRT_StrnlenW) inline size_t wxStrnlen(const wchar_t *str, size_t maxlen) { return wxCRT_StrnlenW(str, maxlen); } #else -// use unsafer wxStrlen: -inline size_t wxStrnlen(const char *str, size_t maxlen) { return wxCRT_StrlenA(str); wxUnusedVar(maxlen); } -inline size_t wxStrnlen(const wchar_t *str, size_t maxlen) { return wxCRT_StrlenW(str); wxUnusedVar(maxlen); } +inline size_t wxStrnlen(const wchar_t *str, size_t maxlen) +{ + size_t n; + for ( n = 0; n < maxlen; n++ ) + if ( !str[n] ) + break; + + return n; +} #endif // NB: these are defined in wxcrtbase.h, see the comment there