]> git.saurik.com Git - wxWidgets.git/commitdiff
Allow shrinking the array with wxArray::resize().
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 15 May 2013 13:05:40 +0000 (13:05 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 15 May 2013 13:05:40 +0000 (13:05 +0000)
This method did nothing if its argument was less than the current array size,
as it was just a synonym for SetSize() which was documented to behave like
this, but this was inconsistent with std::vector and wxVector resize() which
does shrink the array, so change wxArray version to shrink it too.

Closes #15195.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73986 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/dynarray.h

index d50c7c19e874699b6a887f8eb4ca7ae10c1f8ed8..aa066b54b8f7cc0f0299eab3f6eb6142657dd961 100644 (file)
@@ -274,8 +274,13 @@ protected:                                                          \
   void pop_back() { RemoveAt(size() - 1); }                         \
   void push_back(const value_type& v) { Add(v); }                   \
   void reserve(size_type n) { Alloc(n); }                           \
-  void resize(size_type n, value_type v = value_type())             \
-    { SetCount(n, v); }                                             \
+  void resize(size_type count, value_type defval = value_type())    \
+  {                                                                 \
+    if ( count < m_nCount )                                         \
+      m_nCount = count;                                             \
+    else                                                            \
+      SetCount(count, defval);                                      \
+  }                                                                 \
                                                                     \
   iterator begin() { return m_pItems; }                             \
   iterator end() { return m_pItems + m_nCount; }                    \