]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/string.cpp
Uses wxUSE_WCHAR_T for compilers that don't support wchar_t.
[wxWidgets.git] / src / common / string.cpp
index 532e77b6d584ccce386c9acde210e6c62c0df2bd..2d371b9fa4893a67ab64d2d8f63d177a4dff5c16 100644 (file)
@@ -256,8 +256,7 @@ wxString::wxString(const void *pStart, const void *pEnd)
 wxString::wxString(const char *psz, wxMBConv& conv, size_t nLength)
 {
   // first get necessary size
-
-  size_t nLen = conv.MB2WC((wchar_t *) NULL, psz, 0);
+  size_t nLen = psz ? conv.MB2WC((wchar_t *) NULL, psz, 0) : 0;
 
   // nLength is number of *Unicode* characters here!
   if (nLen > nLength)
@@ -279,8 +278,7 @@ wxString::wxString(const char *psz, wxMBConv& conv, size_t nLength)
 wxString::wxString(const wchar_t *pwz)
 {
   // first get necessary size
-
-  size_t nLen = wxWC2MB((char *) NULL, pwz, 0);
+  size_t nLen = pwz ? wxWC2MB((char *) NULL, pwz, 0) : 0;
 
   // empty?
   if ( nLen != 0 ) {
@@ -1187,8 +1185,8 @@ int wxString::PrintfV(const wxChar* pszFormat, va_list argptr)
            if (s.Len() < min_width)
              s.Pad(min_width - s.Len(), _T(' '), adj_left);
            *this += s;
-           done = TRUE;
          }
+         done = TRUE;
          break;
        case _T('n'):
          if (ilen == 0) {
@@ -2091,15 +2089,16 @@ size_t wxCSConv::MB2WC(wchar_t *buf, const char *psz, size_t n) const
   ((wxCSConv *)this)->LoadNow(); // discard constness
   if (buf) {
     if (m_cset) {
-      for (size_t c=0; c<=n; c++)
+      for (size_t c=0; c<n; c++)
        buf[c] = m_cset->data[psz[c]];
     } else {
       // latin-1 (direct)
-      for (size_t c=0; c<=n; c++)
+      for (size_t c=0; c<n; c++)
        buf[c] = psz[c];
     }
+    return n;
   }
-  return n;
+  return strlen(psz);
 }
 
 size_t wxCSConv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
@@ -2107,17 +2106,17 @@ size_t wxCSConv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
   ((wxCSConv *)this)->LoadNow(); // discard constness
   if (buf) {
     if (m_cset) {
-      for (size_t c=0; c<=n; c++) {
+      for (size_t c=0; c<n; c++) {
        size_t n;
        for (n=0; (n<256) && (m_cset->data[n] != psz[c]); n++);
        buf[c] = (n>0xff) ? '?' : n;
       }
     } else {
       // latin-1 (direct)
-      for (size_t c=0; c<=n; c++)
+      for (size_t c=0; c<n; c++)
        buf[c] = (psz[c]>0xff) ? '?' : psz[c];
     }
+    return n;
   }
-  return n;
+  return wcslen(psz);
 }
-