]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/string.cpp
Changed the order in which events are checked, so that LOST events are
[wxWidgets.git] / src / common / string.cpp
index 29dc8d60dad2736cf230f406b063513677fbdda7..3f8cfe19fd3f990a112a267bf773fe46688b2ae9 100644 (file)
@@ -85,6 +85,12 @@ static const struct
   wxChar dummy;
 } g_strEmpty = { {-1, 0, 0}, wxT('\0') };
 
+#if defined(__VISAGECPP__) && __IBMCPP__ >= 400
+// must define this static for VA or else you get multiply defined symbols everywhere
+const unsigned int wxSTRING_MAXLEN = UINT_MAX - 100;
+
+#endif
+
 // empty C style string: points to 'string data' byte of g_strEmpty
 extern const wxChar WXDLLEXPORT *wxEmptyString = &g_strEmpty.dummy;
 
@@ -284,11 +290,11 @@ void wxString::InitWith(const wxChar *psz, size_t nPos, size_t nLength)
 {
   Init();
 
-  wxASSERT( nPos <= wxStrlen(psz) );
-
   if ( nLength == wxSTRING_MAXLEN )
     nLength = wxStrlen(psz + nPos);
 
+  wxASSERT_MSG( nPos + nLength <= wxStrlen(psz), _T("index out of bounds") );
+
   STATISTICS_ADD(InitialLength, nLength);
 
   if ( nLength > 0 ) {
@@ -522,6 +528,12 @@ void wxString::UngetWriteBuf()
   GetStringData()->Validate(TRUE);
 }
 
+void wxString::UngetWriteBuf(size_t nLen)
+{
+  GetStringData()->nDataLength = nLen;
+  GetStringData()->Validate(TRUE);
+}
+
 // ---------------------------------------------------------------------------
 // data access
 // ---------------------------------------------------------------------------
@@ -1076,33 +1088,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
 // ---------------------------------------------------------------------------
@@ -1552,7 +1537,7 @@ size_t wxString::find(const wxString& str, size_t nStart) const
 #if !defined(__VISUALC__) || defined(__WIN32__)
 size_t wxString::find(const wxChar* sz, size_t nStart, size_t n) const
 {
-  return find(wxString(sz, n == npos ? 0 : n), nStart);
+  return find(wxString(sz, n), nStart);
 }
 #endif // VC++ 1.5
 
@@ -1617,7 +1602,7 @@ size_t wxString::find_first_of(const wxChar* sz, size_t nStart) const
     const wxChar *start = c_str() + nStart;
     const wxChar *firstOf = wxStrpbrk(start, sz);
     if ( firstOf )
-        return firstOf - start;
+        return firstOf - c_str();
     else
         return npos;
 }