size_t nLen;
if ( psz )
{
- // calculate the needed size ourselves or use a provide one
+ // calculate the needed size ourselves or use the provided one
nLen = nLength == wxSTRING_MAXLEN ? conv.MB2WC(NULL, psz, 0) : nLength;
}
else
if ( !AllocBuffer(nLen) )
{
wxFAIL_MSG( _T("out of memory in wxString::wxString") );
- return;
}
-
- // MB2WC wants the buffer size, not the string length
- if ( conv.MB2WC(m_pchData, psz, nLen + 1) != (size_t)-1 )
+ else
{
- // initialized ok
- m_pchData[nLen] = 0;
- return;
+ // MB2WC wants the buffer size, not the string length hence +1
+ nLen = conv.MB2WC(m_pchData, psz, nLen + 1);
+
+ if ( nLen != (size_t)-1 )
+ {
+ // initialized ok, set the real length as nLength specified by
+ // the caller could be greater than the real string length
+ GetStringData()->nDataLength = nLen;
+ m_pchData[nLen] = 0;
+ return;
+ }
+ //else: the conversion failed -- leave the string empty (what else?)
}
- //else: the conversion failed -- leave the string empty (what else?)
}
Init();
size_t nLen;
if ( pwz )
{
- // calculate the needed size ourselves or use a provide one
+ // calculate the needed size ourselves or use the provided one
nLen = nLength == wxSTRING_MAXLEN ? conv.WC2MB(NULL, pwz, 0) : nLength;
}
else
if ( !AllocBuffer(nLen) )
{
wxFAIL_MSG( _T("out of memory in wxString::wxString") );
- return;
}
-
- // WC2MB wants the buffer size, not the string length
- if ( conv.WC2MB(m_pchData, pwz, nLen + 1) != (size_t)-1 )
+ else
{
- // initialized ok
- return;
+ // WC2MB wants the buffer size, not the string length
+ if ( conv.WC2MB(m_pchData, pwz, nLen + 1) != (size_t)-1 )
+ {
+ // initialized ok
+ return;
+ }
+ //else: the conversion failed -- leave the string empty (what else?)
}
- //else: the conversion failed -- leave the string empty (what else?)
}
Init();
// ArrayString
// ============================================================================
-#if !wxUSE_STL
-
#include "wx/arrstr.h"
+#if !wxUSE_STL
+
// size increment = min(50% of current size, ARRAY_MAXSIZE_INCREMENT)
#define ARRAY_MAXSIZE_INCREMENT 4096