#include <string.h>
#include <stdlib.h>
-#ifdef __SALFORDC__
- #include <clib.h>
-#endif
-
#include "wx/hashmap.h"
// string handling functions used by wxString:
// UTF-8 sequence and psz may be invalid:
if ( wxStringOperations::IsValidUtf8String(psz, nLength) )
{
+ // we must pass the real string length to SubstrBufFromMB ctor
+ if ( nLength == npos )
+ nLength = psz ? strlen(psz) : 0;
return SubstrBufFromMB(wxCharBuffer::CreateNonOwned(psz), nLength);
}
// else: do the roundtrip through wchar_t*
size_t uiCount = 0; // count of replacements made
- size_t uiOldLen = strOld.length();
- size_t uiNewLen = strNew.length();
-
- size_t dwPos = 0;
+ const size_t uiOldLen = strOld.m_impl.length();
+ const size_t uiNewLen = strNew.m_impl.length();
- while ( (*this)[dwPos] != wxT('\0') )
+ for ( size_t dwPos = 0; dwPos < m_impl.length(); )
{
- //DO NOT USE STRSTR HERE
- //this string can contain embedded null characters,
- //so strstr will function incorrectly
- dwPos = find(strOld, dwPos);
+ dwPos = m_impl.find(strOld.m_impl, dwPos);
if ( dwPos == npos )
- break; // exit the loop
- else
- {
- //replace this occurance of the old string with the new one
- replace(dwPos, uiOldLen, strNew, uiNewLen);
+ break;
- //move up pos past the string that was replaced
- dwPos += uiNewLen;
+ // replace this occurance of the old string with the new one
+ m_impl.replace(dwPos, uiOldLen, strNew.m_impl);
- //increase replace count
- ++uiCount;
+ // move up pos past the string that was replaced
+ dwPos += uiNewLen;
- // stop now?
- if ( !bReplaceAll )
- break; // exit the loop
- }
+ // increase replace count
+ ++uiCount;
+
+ // stop after the first one?
+ if ( !bReplaceAll )
+ break;
}
return uiCount;