git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@788
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
}
// extract string of length nCount starting at nFirst
}
// 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
{
wxString wxString::Mid(size_t nFirst, size_t nCount) const
{
+ wxStringData *pData = GetStringData();
+ size_t nLen = pData->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
// out-of-bounds requests return sensible things
- if ( nCount == 0 )
- nCount = GetStringData()->nDataLength - nFirst;
+ if ( nFirst + nCount > nLen )
+ {
+ nCount = nLen - nFirst;
+ }
- if ( nFirst + nCount > (size_t)GetStringData()->nDataLength )
- nCount = GetStringData()->nDataLength - nFirst;
- if ( nFirst > (size_t)GetStringData()->nDataLength )
+ if ( nFirst > nLen )
+ {
+ // AllocCopy() will return empty string
wxString dest;
AllocCopy(dest, nCount, nFirst);
wxString dest;
AllocCopy(dest, nCount, nFirst);