X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/35d5da677d3203d7027eb28b1b6878be9d920108..08670ea85abf4b4946a9ce64971b591d7b1ee30b:/src/common/dynarray.cpp diff --git a/src/common/dynarray.cpp b/src/common/dynarray.cpp index 76cff5323e..8d62ca6b06 100644 --- a/src/common/dynarray.cpp +++ b/src/common/dynarray.cpp @@ -28,7 +28,7 @@ #include #include // for memmove -#if !wxUSE_STL +#if !wxUSE_STD_CONTAINERS // we cast the value to long from which we cast it to void * in IndexForInsert: // this can't work if the pointers are not big enough @@ -87,7 +87,7 @@ name::name() \ { \ m_nSize = \ m_nCount = 0; \ - m_pItems = (T *)NULL; \ + m_pItems = NULL; \ } \ \ /* copy ctor */ \ @@ -107,7 +107,7 @@ name::name(const name& src) \ } \ } \ else \ - m_pItems = (T *) NULL; \ + m_pItems = NULL; \ } \ \ /* assignment operator */ \ @@ -129,7 +129,7 @@ name& name::operator=(const name& src) \ } \ } \ else \ - m_pItems = (T *) NULL; \ + m_pItems = NULL; \ \ return *this; \ } \ @@ -358,6 +358,9 @@ void name::insert(iterator it, const_iterator first, const_iterator last) \ return; \ Grow(nInsert); \ \ + /* old iterator could have been invalidated by Grow(). */ \ + it = begin() + nIndex; \ + \ memmove(&m_pItems[nIndex + nInsert], &m_pItems[nIndex], \ (m_nCount - nIndex)*sizeof(T)); \ for (size_t i = 0; i < nInsert; ++i, ++it, ++first) \ @@ -383,7 +386,7 @@ _WX_DEFINE_BASEARRAY(double, wxBaseArrayDouble) #pragma warning(pop) #endif -#else // wxUSE_STL +#else // wxUSE_STD_CONTAINERS #include "wx/arrstr.h" @@ -475,32 +478,20 @@ void wxArrayString::Sort(bool reverseOrder) } } -int wxSortedArrayString::Index(const wxString& str, bool bCase, bool WXUNUSED(bFromEnd)) const +int wxSortedArrayString::Index(const wxString& str, + bool WXUNUSED_UNLESS_DEBUG(bCase), + bool WXUNUSED_UNLESS_DEBUG(bFromEnd)) const { - wxSortedArrayString::const_iterator it; + wxASSERT_MSG( bCase && !bFromEnd, + "search parameters ignored for sorted array" ); - if (bCase) - it = std::lower_bound(begin(), end(), str, - wxStringCompare(wxStringCmp())); - else - it = std::lower_bound(begin(), end(), str, - wxStringCompare(wxStringCmpNoCase())); + wxSortedArrayString::const_iterator + it = std::lower_bound(begin(), end(), str, wxStringCompare(wxStringCmp())); - if (it == end()) + if ( it == end() || str.Cmp(*it) != 0 ) return wxNOT_FOUND; - if (bCase) - { - if (str.Cmp(*it) != 0) - return wxNOT_FOUND; - } - else - { - if (str.CmpNoCase(*it) != 0) - return wxNOT_FOUND; - } - return it - begin(); } -#endif // !wxUSE_STL/wxUSE_STL +#endif // !wxUSE_STD_CONTAINERS/wxUSE_STD_CONTAINERS