]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/string.cpp
compilation fixes - wxGTK compiles but not links
[wxWidgets.git] / src / common / string.cpp
index b0550b816fad8a71448fc03e6b9800f68c040949..38d6d28300da0ca09ddabbe92a2b35282cc88d51 100644 (file)
@@ -86,10 +86,10 @@ static const struct
 } g_strEmpty = { {-1, 0, 0}, wxT('\0') };
 
 #if defined(__VISAGECPP__) && __IBMCPP__ >= 400
-// must define this static for VA or else you get multiply defined symbols everywhere
+// must define this static for VA or else you get multiply defined symbols
+// everywhere
 const unsigned int wxSTRING_MAXLEN = UINT_MAX - 100;
-
-#endif
+#endif // Visual Age
 
 // empty C style string: points to 'string data' byte of g_strEmpty
 extern const wxChar WXDLLEXPORT *wxEmptyString = &g_strEmpty.dummy;
@@ -153,7 +153,7 @@ extern const wxChar WXDLLEXPORT *wxEmptyString = &g_strEmpty.dummy;
 //
 // ATTN: you can _not_ use both of these in the same program!
 
-istream& operator>>(istream& is, wxString& WXUNUSED(str))
+wxSTD istream& operator>>(wxSTD istream& is, wxString& WXUNUSED(str))
 {
 #if 0
   int w = is.width(0);
@@ -184,7 +184,7 @@ istream& operator>>(istream& is, wxString& WXUNUSED(str))
   return is;
 }
 
-ostream& operator<<(ostream& os, const wxString& str)
+wxSTD ostream& operator<<(wxSTD ostream& os, const wxString& str)
 {
   os << str.c_str();
   return os;
@@ -201,7 +201,8 @@ extern int WXDLLEXPORT wxVsnprintf(wxChar *buf, size_t len,
     int iLen = s.PrintfV(format, argptr);
     if ( iLen != -1 )
     {
-        wxStrncpy(buf, s.c_str(), iLen);
+        wxStrncpy(buf, s.c_str(), len);
+        buf[len-1] = wxT('\0');
     }
 
     return iLen;
@@ -1853,6 +1854,8 @@ wxArrayString& wxArrayString::operator=(const wxArrayString& src)
 
   Copy(src);
 
+  m_autoSort = src.m_autoSort;
+
   return *this;
 }
 
@@ -1869,8 +1872,14 @@ void wxArrayString::Copy(const wxArrayString& src)
 void wxArrayString::Grow()
 {
   // only do it if no more place
-  if( m_nCount == m_nSize ) {
-    if( m_nSize == 0 ) {
+  if ( m_nCount == m_nSize ) {
+    // if ARRAY_DEFAULT_INITIAL_SIZE were set to 0, the initially empty would
+    // be never resized!
+    #if ARRAY_DEFAULT_INITIAL_SIZE == 0
+      #error "ARRAY_DEFAULT_INITIAL_SIZE must be > 0!"
+    #endif
+
+    if ( m_nSize == 0 ) {
       // was empty, alloc some memory
       m_nSize = ARRAY_DEFAULT_INITIAL_SIZE;
       m_pItems = new wxChar *[m_nSize];
@@ -1878,13 +1887,6 @@ void wxArrayString::Grow()
     else {
       // otherwise when it's called for the first time, nIncrement would be 0
       // and the array would never be expanded
-#if defined(__VISAGECPP__) && defined(__WXDEBUG__)
-      int array_size = ARRAY_DEFAULT_INITIAL_SIZE;
-      wxASSERT( array_size != 0 );
-#else
-      wxASSERT( ARRAY_DEFAULT_INITIAL_SIZE != 0 );
-#endif
-
       // add 50% but not too much
       size_t nIncrement = m_nSize < ARRAY_DEFAULT_INITIAL_SIZE
                           ? ARRAY_DEFAULT_INITIAL_SIZE : m_nSize >> 1;