]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/string.cpp
Fixed compilation (add serbase.cpp)
[wxWidgets.git] / src / common / string.cpp
index 49b3c74f866bbbc85b5b3ac86ef043c784f6a2f1..407d143e3c3ec2f337722b8dcf9e04966cd0ba78 100644 (file)
@@ -258,7 +258,7 @@ void wxString::CopyBeforeWrite()
     memcpy(m_pchData, pData->data(), nLen*sizeof(char));
   }
 
-  wxASSERT( !pData->IsShared() );  // we must be the only owner
+  wxASSERT( !GetStringData()->IsShared() );  // we must be the only owner
 }
 
 // must be called before replacing contents of this string
@@ -323,8 +323,14 @@ void wxString::Alloc(uint nLen)
 void wxString::Shrink()
 {
   wxStringData *pData = GetStringData();
-  void *p = realloc(pData, sizeof(wxStringData) +
-                    (pData->nDataLength + 1)*sizeof(char));
+
+  // this variable is unused in release build, so avoid the compiler warning by
+  // just not declaring it
+#ifdef __WXDEBUG__
+  void *p =
+#endif
+  realloc(pData, sizeof(wxStringData) + (pData->nDataLength + 1)*sizeof(char));
+
   wxASSERT( p != NULL );  // can't free memory?
   wxASSERT( p == pData ); // we're decrementing the size - block shouldn't move!
 }
@@ -1073,6 +1079,8 @@ wxArrayString::wxArrayString()
 // copy ctor
 wxArrayString::wxArrayString(const wxArrayString& src)
 {
+  m_nSize  =
+  m_nCount = 0;
   m_pItems = NULL;
 
   *this = src;
@@ -1081,7 +1089,7 @@ wxArrayString::wxArrayString(const wxArrayString& src)
 // assignment operator
 wxArrayString& wxArrayString::operator=(const wxArrayString& src)
 {
-  DELETEA(m_pItems);
+  Clear();
 
   m_nSize = 0;
   if ( src.m_nCount > ARRAY_DEFAULT_INITIAL_SIZE )
@@ -1092,6 +1100,9 @@ wxArrayString& wxArrayString::operator=(const wxArrayString& src)
   for ( uint n = 0; n < src.m_nCount; n++ )
     Add(src[n]);
 
+  if ( m_nCount != 0 )
+    memcpy(m_pItems, src.m_pItems, m_nCount*sizeof(char *));
+
   return *this;
 }
 
@@ -1106,8 +1117,12 @@ void wxArrayString::Grow()
       m_pItems = new char *[m_nSize];
     }
     else {
+      // otherwise when it's called for the first time, nIncrement would be 0
+      // and the array would never be expanded
+      wxASSERT( ARRAY_DEFAULT_INITIAL_SIZE != 0 );
+
       // add 50% but not too much
-      size_t nIncrement = m_nSize < ARRAY_DEFAULT_INITIAL_SIZE 
+      size_t nIncrement = m_nSize < ARRAY_DEFAULT_INITIAL_SIZE
                           ? ARRAY_DEFAULT_INITIAL_SIZE : m_nSize >> 1;
       if ( nIncrement > ARRAY_MAXSIZE_INCREMENT )
         nIncrement = ARRAY_MAXSIZE_INCREMENT;
@@ -1255,7 +1270,7 @@ void wxArrayString::Remove(const char *sz)
 
 // sort array elements using passed comparaison function
 
-void wxArrayString::Sort(bool bCase, bool bReverse)
+void wxArrayString::Sort(bool WXUNUSED(bCase), bool WXUNUSED(bReverse) )
 {
   //@@@@ TO DO
   //qsort(m_pItems, m_nCount, sizeof(char *), fCmp);