X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/903506828b7d042350eae97b5014a63ffca17ef5..0d1dff0172e94487c4aa2d830c714f93be73c7ec:/src/common/string.cpp diff --git a/src/common/string.cpp b/src/common/string.cpp index 6bc1683a23..c8ebc830cd 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -340,10 +340,17 @@ wxString::wxString(const char *psz, wxMBConv& conv, size_t nLength) #if wxUSE_WCHAR_T // from wide string -wxString::wxString(const wchar_t *pwz, wxMBConv& conv) +wxString::wxString(const wchar_t *pwz, wxMBConv& conv, size_t nLength) { // first get necessary size - size_t nLen = pwz ? conv.WC2MB((char *) NULL, pwz, 0) : 0; + size_t nLen = 0; + if (pwz) + { + if (nLength == wxSTRING_MAXLEN) + nLen = conv.WC2MB((char *) NULL, pwz, 0); + else + nLen = nLength; + } // empty? if ( (nLen != 0) && (nLen != (size_t)-1) ) { @@ -1904,7 +1911,7 @@ wxString& wxString::replace(size_t nStart, size_t nLen, #define STRING(p) ((wxString *)(&(p))) // ctor -wxArrayString::wxArrayString(bool autoSort) +void wxArrayString::Init(bool autoSort) { m_nSize = m_nCount = 0; @@ -1915,10 +1922,7 @@ wxArrayString::wxArrayString(bool autoSort) // copy ctor wxArrayString::wxArrayString(const wxArrayString& src) { - m_nSize = - m_nCount = 0; - m_pItems = (wxChar **) NULL; - m_autoSort = src.m_autoSort; + Init(src.m_autoSort); *this = src; } @@ -2020,8 +2024,6 @@ wxArrayString::~wxArrayString() // pre-allocates memory (frees the previous data!) void wxArrayString::Alloc(size_t nSize) { - wxASSERT( nSize > 0 ); - // only if old buffer was not big enough if ( nSize > m_nSize ) { Free();