diff --git a/docs/changes.txt b/docs/changes.txt index a799e31985..0520684946 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -69,12 +69,19 @@ Deprecated methods since 2.6.x and their replacements -Major new features in 2.7 release +Major new features in 2.8 release --------------------------------- - New AUI library supporting docking windows and much more. +2.8.0 +----- + +All: + +- wxArrayString::Alloc() now works as reserve() and doesn't clear array contents + 2.7.2 ----- diff --git a/src/common/string.cpp b/src/common/string.cpp index 4551c66931..8a722a4f4c 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -2191,13 +2191,16 @@ void wxArrayString::Alloc(size_t nSize) { // only if old buffer was not big enough if ( nSize > m_nSize ) { - Free(); - wxDELETEA(m_pItems); - m_pItems = new wxChar *[nSize]; + wxChar **pNew = new wxChar *[nSize]; + if ( !pNew ) + return; + + memcpy(pNew, m_pItems, m_nCount*sizeof(wxChar *)); + delete [] m_pItems; + + m_pItems = pNew; m_nSize = nSize; } - - m_nCount = 0; } // minimizes the memory usage by freeing unused memory