X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3bbb630a217d8212c63ac16d5338f692b70ab392..d1427b705318677afe28b1291867f6930c8823a7:/src/common/string.cpp?ds=sidebyside diff --git a/src/common/string.cpp b/src/common/string.cpp index 677d6a832a..1273610fb6 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -34,6 +34,7 @@ #ifndef WX_PRECOMP #include "wx/defs.h" #include "wx/string.h" +#include #endif #include @@ -46,7 +47,8 @@ // allocating extra space for each string consumes more memory but speeds up // the concatenation operations (nLen is the current string's length) -#define EXTRA_ALLOC 16 +// NB: EXTRA_ALLOC must be >= 0! +#define EXTRA_ALLOC (19 - nLen % 16) // --------------------------------------------------------------------------- // static class variables definition @@ -1089,9 +1091,9 @@ wxArrayString::wxArrayString(const wxArrayString& src) // assignment operator wxArrayString& wxArrayString::operator=(const wxArrayString& src) { - Clear(); + if ( m_nSize > 0 ) + Clear(); - m_nSize = 0; if ( src.m_nCount > ARRAY_DEFAULT_INITIAL_SIZE ) Alloc(src.m_nCount); @@ -1133,7 +1135,7 @@ void wxArrayString::Grow() memcpy(pNew, m_pItems, m_nCount*sizeof(char *)); // delete old memory (but do not release the strings!) - DELETEA(m_pItems); + wxDELETEA(m_pItems); m_pItems = pNew; } @@ -1163,8 +1165,7 @@ void wxArrayString::Clear() m_nSize = m_nCount = 0; - DELETEA(m_pItems); - m_pItems = NULL; + wxDELETEA(m_pItems); } // dtor @@ -1172,7 +1173,7 @@ wxArrayString::~wxArrayString() { Free(); - DELETEA(m_pItems); + wxDELETEA(m_pItems); } // pre-allocates memory (frees the previous data!) @@ -1183,7 +1184,7 @@ void wxArrayString::Alloc(size_t nSize) // only if old buffer was not big enough if ( nSize > m_nSize ) { Free(); - DELETEA(m_pItems); + wxDELETEA(m_pItems); m_pItems = new char *[nSize]; m_nSize = nSize; } @@ -1231,7 +1232,7 @@ void wxArrayString::Insert(const wxString& str, size_t nIndex) { wxASSERT( str.GetStringData()->IsValid() ); - wxCHECK_RET( nIndex <= m_nCount, "bad index in wxArrayString::Insert" ); + wxCHECK_RET( nIndex <= m_nCount, ("bad index in wxArrayString::Insert") ); Grow(); @@ -1247,7 +1248,7 @@ void wxArrayString::Insert(const wxString& str, size_t nIndex) // removes item from array (by index) void wxArrayString::Remove(size_t nIndex) { - wxCHECK_RET( nIndex <= m_nCount, "bad index in wxArrayString::Remove" ); + wxCHECK_RET( nIndex <= m_nCount, _("bad index in wxArrayString::Remove") ); // release our lock Item(nIndex).GetStringData()->Unlock(); @@ -1263,14 +1264,14 @@ void wxArrayString::Remove(const char *sz) int iIndex = Index(sz); wxCHECK_RET( iIndex != NOT_FOUND, - "removing inexistent element in wxArrayString::Remove" ); + _("removing inexistent element in wxArrayString::Remove") ); Remove((size_t)iIndex); } // 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);