X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77c3e48a9e93244c7e6b6a1eed3339e929e0fed9..7dc3cc31af71522b8fc55b7f97bcba7f5ef9eac5:/src/common/string.cpp diff --git a/src/common/string.cpp b/src/common/string.cpp index 7773d3b552..f37934d939 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -360,8 +360,13 @@ wxString::wxString(const wchar_t *pwz) // allocates memory needed to store a C string of length nLen void wxString::AllocBuffer(size_t nLen) { - wxASSERT( nLen > 0 ); // - wxASSERT( nLen <= INT_MAX-1 ); // max size (enough room for 1 extra) + // allocating 0 sized buffer doesn't make sense, all empty strings should + // reuse g_strEmpty + wxASSERT( nLen > 0 ); + + // make sure that we don't overflow + wxASSERT( nLen < (INT_MAX / sizeof(wxChar)) - + (sizeof(wxStringData) + EXTRA_ALLOC + 1) ); STATISTICS_ADD(Length, nLen); @@ -1071,33 +1076,6 @@ bool wxString::ToDouble(double *val) const return !*end && (end != start); } -// --------------------------------------------------------------------------- -// stream-like operators -// --------------------------------------------------------------------------- -wxString& wxString::operator<<(int i) -{ - wxString res; - res.Printf(wxT("%d"), i); - - return (*this) << res; -} - -wxString& wxString::operator<<(float f) -{ - wxString res; - res.Printf(wxT("%f"), f); - - return (*this) << res; -} - -wxString& wxString::operator<<(double d) -{ - wxString res; - res.Printf(wxT("%g"), d); - - return (*this) << res; -} - // --------------------------------------------------------------------------- // formatted output // --------------------------------------------------------------------------- @@ -1802,20 +1780,8 @@ void wxArrayString::Copy(const wxArrayString& src) if ( src.m_nCount > ARRAY_DEFAULT_INITIAL_SIZE ) Alloc(src.m_nCount); - // we can't just copy the pointers here because otherwise we would share - // the strings with another array because strings are ref counted -#if 0 - if ( m_nCount != 0 ) - memcpy(m_pItems, src.m_pItems, m_nCount*sizeof(wxChar *)); -#endif // 0 - for ( size_t n = 0; n < src.m_nCount; n++ ) Add(src[n]); - - // if the other array is auto sorted too, we're already sorted, but - // otherwise we should rearrange the items - if ( m_autoSort && !src.m_autoSort ) - Sort(); } // grow the array