]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/string.cpp
added src/mac/carbon/display.cpp to project
[wxWidgets.git] / src / common / string.cpp
index 503ff915c9da4de181590e9091c97d06727f3ed7..9b1de655cd4fd2f4a483506675861972b2383b8b 100644 (file)
@@ -100,6 +100,8 @@ extern const wxChar WXDLLIMPEXP_BASE *wxEmptyString = &g_strEmpty.dummy;
 //
 // 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
@@ -168,6 +170,8 @@ wxSTD ostream& operator<<(wxSTD ostream& os, const wxString& str)
   #define STATISTICS_ADD(av, val)
 #endif // WXSTRING_STATISTICS
 
+#if !wxUSE_STL
+
 // ===========================================================================
 // wxStringData class deallocation
 // ===========================================================================
@@ -180,8 +184,6 @@ void wxStringData::Free()
 }
 #endif
 
-#if !wxUSE_STL
-
 // ===========================================================================
 // wxStringBase
 // ===========================================================================
@@ -968,9 +970,14 @@ wxString::wxString(const char *psz, wxMBConv& conv, size_t nLength)
         }
         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 )
             {
@@ -2325,12 +2332,12 @@ bool wxArrayString::operator==(const wxArrayString& a) const
 
 #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());
 }