diff --git a/include/wx/string.h b/include/wx/string.h index b5b8104dea..c3380f25ec 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -346,7 +346,7 @@ public: #if wxUSE_WCHAR_T // from wide (Unicode) string - wxString(const wchar_t *pwz, wxMBConv& conv = wxConvLibc); + wxString(const wchar_t *pwz, wxMBConv& conv = wxConvLibc, size_t nLength = wxSTRING_MAXLEN); #endif // !wxUSE_WCHAR_T // from wxCharBuffer diff --git a/src/common/string.cpp b/src/common/string.cpp index d0297f3c97..134cd452c6 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) ) {