]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/dynarray.cpp
even more fixes to last-minute wxFileSystem mods
[wxWidgets.git] / src / common / dynarray.cpp
index 1b3a0353b9703e132cbc220cec62dc3f992537c6..4d0ee51d2867fc54067fef5ee9eae2dbebb43b71 100644 (file)
@@ -110,7 +110,7 @@ name& name::operator=(const name& src)                                      \
 void name::Grow(size_t nIncrement)                                          \
 {                                                                           \
   /* only do it if no more place */                                         \
-  if( m_nCount == m_nSize ) {                                               \
+  if( (m_nCount == m_nSize) || ((m_nSize - m_nCount) < nIncrement) ) {      \
     if( m_nSize == 0 ) {                                                    \
       /* was empty, determine initial size */                               \
       size_t size = WX_ARRAY_DEFAULT_INITIAL_SIZE;                          \
@@ -253,6 +253,8 @@ int name::Index(T lItem, CMPFUNC fnCompare) const                           \
 /* add item at the end */                                                   \
 void name::Add(T lItem, size_t nInsert)                                     \
 {                                                                           \
+  if (nInsert == 0)                                                         \
+      return;                                                               \
   Grow(nInsert);                                                            \
   for (size_t i = 0; i < nInsert; i++)                                      \
       m_pItems[m_nCount++] = lItem;                                         \
@@ -271,6 +273,8 @@ void name::Insert(T lItem, size_t nIndex, size_t nInsert)                   \
   wxCHECK_RET( m_nCount <= m_nCount + nInsert,                              \
                wxT("array size overflow in wxArray::Insert") );             \
                                                                             \
+  if (nInsert == 0)                                                         \
+      return;                                                               \
   Grow(nInsert);                                                            \
                                                                             \
   memmove(&m_pItems[nIndex + nInsert], &m_pItems[nIndex],                   \