fixed wxString::Mid() bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@788 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
ac9390a0bc
commit
30d9011f40
@ -564,20 +564,32 @@ void wxString::AllocCopy(wxString& dest, int nCopyLen, int nCopyIndex) const
|
||||
}
|
||||
|
||||
// extract string of length nCount starting at nFirst
|
||||
// default value of nCount is 0 and means "till the end"
|
||||
wxString wxString::Mid(size_t nFirst, size_t nCount) const
|
||||
{
|
||||
// out-of-bounds requests return sensible things
|
||||
if ( nCount == 0 )
|
||||
nCount = GetStringData()->nDataLength - nFirst;
|
||||
wxStringData *pData = GetStringData();
|
||||
size_t nLen = pData->nDataLength;
|
||||
|
||||
if ( nFirst + nCount > (size_t)GetStringData()->nDataLength )
|
||||
nCount = GetStringData()->nDataLength - nFirst;
|
||||
if ( nFirst > (size_t)GetStringData()->nDataLength )
|
||||
// default value of nCount is STRING_MAXLEN and means "till the end"
|
||||
if ( nCount == STRING_MAXLEN )
|
||||
{
|
||||
nCount = nLen - nFirst;
|
||||
}
|
||||
|
||||
// out-of-bounds requests return sensible things
|
||||
if ( nFirst + nCount > nLen )
|
||||
{
|
||||
nCount = nLen - nFirst;
|
||||
}
|
||||
|
||||
if ( nFirst > nLen )
|
||||
{
|
||||
// AllocCopy() will return empty string
|
||||
nCount = 0;
|
||||
}
|
||||
|
||||
wxString dest;
|
||||
AllocCopy(dest, nCount, nFirst);
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user