//
// ATTN: you can _not_ use both of these in the same program!
+#include <iostream>
+
wxSTD istream& operator>>(wxSTD istream& is, wxString& WXUNUSED(str))
{
#if 0
#define STATISTICS_ADD(av, val)
#endif // WXSTRING_STATISTICS
+#if !wxUSE_STL
+
// ===========================================================================
// wxStringData class deallocation
// ===========================================================================
}
#endif
-#if !wxUSE_STL
-
// ===========================================================================
// wxStringBase
// ===========================================================================
}
else
{
- wxWCharBuffer buf(nLen + 1);
+ // the input buffer to MB2WC must always be NUL-terminated
+ wxCharBuffer inBuf(nLen);
+ memcpy(inBuf.data(), psz, nLen);
+ inBuf.data()[nLen] = '\0';
+
+ wxWCharBuffer buf(nLen);
// MB2WC wants the buffer size, not the string length hence +1
- nLen = conv.MB2WC(buf.data(), psz, nLen + 1);
+ nLen = conv.MB2WC(buf.data(), inBuf.data(), nLen + 1);
if ( nLen != (size_t)-1 )
{
#endif // !wxUSE_STL
-int wxStringSortAscending(wxString* s1, wxString* s2)
+int wxCMPFUNC_CONV wxStringSortAscending(wxString* s1, wxString* s2)
{
return wxStrcmp(s1->c_str(), s2->c_str());
}
-int wxStringSortDescending(wxString* s1, wxString* s2)
+int wxCMPFUNC_CONV wxStringSortDescending(wxString* s1, wxString* s2)
{
return -wxStrcmp(s1->c_str(), s2->c_str());
}