Prevent crash in wxString::Mid under STL builds (fixes #1231725).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34811 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1397,32 +1397,33 @@ const wxCharBuffer wxString::ToAscii() const
|
|||||||
// extract string of length nCount starting at nFirst
|
// extract string of length nCount starting at nFirst
|
||||||
wxString wxString::Mid(size_t nFirst, size_t nCount) const
|
wxString wxString::Mid(size_t nFirst, size_t nCount) const
|
||||||
{
|
{
|
||||||
size_t nLen = length();
|
size_t nLen = length();
|
||||||
|
|
||||||
// default value of nCount is npos and means "till the end"
|
// default value of nCount is npos and means "till the end"
|
||||||
if ( nCount == npos )
|
if ( nCount == npos )
|
||||||
{
|
{
|
||||||
nCount = nLen - nFirst;
|
nCount = nLen - nFirst;
|
||||||
}
|
}
|
||||||
|
|
||||||
// out-of-bounds requests return sensible things
|
// out-of-bounds requests return sensible things
|
||||||
if ( nFirst + nCount > nLen )
|
if ( nFirst + nCount > nLen )
|
||||||
{
|
{
|
||||||
nCount = nLen - nFirst;
|
nCount = nLen - nFirst;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( nFirst > nLen )
|
if ( nFirst > nLen )
|
||||||
{
|
{
|
||||||
// AllocCopy() will return empty string
|
// AllocCopy() will return empty string
|
||||||
nCount = 0;
|
return wxEmptyString;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString dest(*this, nFirst, nCount);
|
wxString dest(*this, nFirst, nCount);
|
||||||
if ( dest.length() != nCount ) {
|
if ( dest.length() != nCount )
|
||||||
wxFAIL_MSG( _T("out of memory in wxString::Mid") );
|
{
|
||||||
}
|
wxFAIL_MSG( _T("out of memory in wxString::Mid") );
|
||||||
|
}
|
||||||
|
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check that the string starts with prefix and return the rest of the string
|
// check that the string starts with prefix and return the rest of the string
|
||||||
|
Reference in New Issue
Block a user