fix crashes due to missing npos handling in several wxString methods in STL build (bug 1941352); add an assert to ensure this bug doesn't occur in the future

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53161 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2008-04-13 23:41:15 +00:00
parent 5540b06b00
commit 9ef1ad0d2c
2 changed files with 7 additions and 1 deletions

View File

@ -431,7 +431,10 @@ private:
size_t len;
SubstrBufFromType(const T& data_, size_t len_)
: data(data_), len(len_) {}
: data(data_), len(len_)
{
wxASSERT_MSG( len != npos, "must have real length" );
}
};
#if wxUSE_UNICODE_UTF8

View File

@ -369,6 +369,9 @@ wxString::SubstrBufFromMB wxString::ConvertStr(const char *psz, size_t nLength,
// UTF-8 sequence and psz may be invalid:
if ( wxStringOperations::IsValidUtf8String(psz, nLength) )
{
// we must pass the real string length to SubstrBufFromMB ctor
if ( nLength == npos )
nLength = psz ? strlen(psz) : 0;
return SubstrBufFromMB(wxCharBuffer::CreateNonOwned(psz), nLength);
}
// else: do the roundtrip through wchar_t*