X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eecb33b0189a3804dead82317a575e0f1d52cd9f..1eeb64fb65f7e6cf10b05ba8a0875206cf47d94c:/src/common/string.cpp?ds=sidebyside diff --git a/src/common/string.cpp b/src/common/string.cpp index 4d16458ff8..d448b4b306 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -326,7 +326,7 @@ wxStringBase& wxStringBase::append(size_t n, wxChar ch) { size_type len = length(); - if ( !CopyBeforeWrite() || !Alloc(len + n) ) { + if ( !Alloc(len + n) || !CopyBeforeWrite() ) { wxFAIL_MSG( _T("out of memory in wxStringBase::append") ); } GetStringData()->nDataLength = len + n; @@ -445,7 +445,7 @@ wxStringBase& wxStringBase::insert(size_t nPos, const wxChar *sz, size_t n) if ( n == npos ) n = wxStrlen(sz); if ( n == 0 ) return *this; - if ( !CopyBeforeWrite() || !Alloc(length() + n) ) { + if ( !Alloc(length() + n) || !CopyBeforeWrite() ) { wxFAIL_MSG( _T("out of memory in wxStringBase::insert") ); } @@ -481,8 +481,14 @@ size_t wxStringBase::find(const wxStringBase& str, size_t nStart) const while(p - c_str() + str.length() <= length() && wxTmemcmp(p, str.c_str(), str.length()) ) { + //Previosly passed as the first argument to wxTmemchr, + //but C/C++ standard does not specify evaluation order + //of arguments to functions - + //http://embedded.com/showArticle.jhtml?articleID=9900607 + ++p; + //anchor again - p = (const wxChar*)wxTmemchr(++p, + p = (const wxChar*)wxTmemchr(p, str.c_str()[0], length() - (p - c_str())); @@ -1219,7 +1225,7 @@ wxString operator+(const wxString& str, const wxChar *psz) if ( !s.Alloc(wxStrlen(psz) + str.Len()) ) { wxFAIL_MSG( _T("out of memory in wxString::operator+") ); } - s = str; + s += str; s += psz; return s;