X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e6310bbc5a3bce1033c0e579341e115be9df6fe9..1c0338c5615c351371f704b326634f58d0bf7da9:/src/common/string.cpp diff --git a/src/common/string.cpp b/src/common/string.cpp index 7b9f77b28b..d36f85bd5a 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -340,7 +340,7 @@ wxString::SubstrBufFromMB wxString::ConvertStr(const char *psz, size_t nLength, return SubstrBufFromMB("", 0); // and then to UTF-8: - SubstrBufFromMB buf(ConvertStr(wcBuf, wcLen, wxMBConvUTF8())); + SubstrBufFromMB buf(ConvertStr(wcBuf, wcLen, wxMBConvStrictUTF8())); // widechar -> UTF-8 conversion isn't supposed to ever fail: wxASSERT_MSG( buf.data, _T("conversion to UTF-8 failed") ); @@ -382,9 +382,12 @@ const wxCharBuffer wxString::mb_str(const wxMBConv& conv) const const wxWCharBuffer wxString::wc_str() const { - return wxMBConvUTF8().cMB2WC(m_impl.c_str(), - m_impl.length() + 1 /* size, not length */, - NULL); + return wxMBConvStrictUTF8().cMB2WC + ( + m_impl.c_str(), + m_impl.length() + 1, // size, not length + NULL + ); } const wxCharBuffer wxString::mb_str(const wxMBConv& conv) const @@ -395,10 +398,12 @@ const wxCharBuffer wxString::mb_str(const wxMBConv& conv) const // FIXME-UTF8: use wc_str() here once we have buffers with length size_t wcLen; - wxWCharBuffer wcBuf( - wxMBConvUTF8().cMB2WC(m_impl.c_str(), - m_impl.length() + 1 /* size, not length */, - &wcLen)); + wxWCharBuffer wcBuf(wxMBConvStrictUTF8().cMB2WC + ( + m_impl.c_str(), + m_impl.length() + 1, // size + &wcLen + )); if ( !wcLen ) return wxCharBuffer(""); @@ -980,19 +985,18 @@ wxString wxString::FromAscii(const char *ascii, size_t len) wxString res; - wxImplStringBuffer buf(res, len); - wxStringCharType *dest = buf; - - for ( ;; ) { - unsigned char c = (unsigned char)*ascii++; - wxASSERT_MSG( c < 0x80, - _T("Non-ASCII value passed to FromAscii().") ); + wxImplStringBuffer buf(res, len); + wxStringCharType *dest = buf; - *dest++ = (wchar_t)c; + for ( ; len > 0; --len ) + { + unsigned char c = (unsigned char)*ascii++; + wxASSERT_MSG( c < 0x80, + _T("Non-ASCII value passed to FromAscii().") ); - if ( c == '\0' ) - break; + *dest++ = (wchar_t)c; + } } return res; @@ -1000,7 +1004,7 @@ wxString wxString::FromAscii(const char *ascii, size_t len) wxString wxString::FromAscii(const char *ascii) { - return FromAscii(ascii, strlen(ascii)); + return FromAscii(ascii, wxStrlen(ascii)); } wxString wxString::FromAscii(const char ascii)