]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/strconv.cpp
Fix wxRichToolTip compilation under MSW without PCH and recent SDK headers.
[wxWidgets.git] / src / common / strconv.cpp
index 170ad719bdbd0380c6d06b8de8cf8aaedb37e9d6..9c6299a5d3f4e7762b8536c3d6ad56ca0def812e 100644 (file)
@@ -1230,7 +1230,10 @@ size_t wxMBConvUTF8::ToWChar(wchar_t *buf, size_t n,
 
     size_t len = 0;
 
 
     size_t len = 0;
 
-    while ((srcLen == wxNO_LEN ? *psz : srcLen--) && ((!buf) || (len < n)))
+    // The length can be either given explicitly or computed implicitly for the
+    // NUL-terminated strings.
+    const bool isNulTerminated = srcLen == wxNO_LEN;
+    while ((isNulTerminated ? *psz : srcLen--) && ((!buf) || (len < n)))
     {
         const char *opsz = psz;
         bool invalid = false;
     {
         const char *opsz = psz;
         bool invalid = false;
@@ -1364,10 +1367,17 @@ size_t wxMBConvUTF8::ToWChar(wchar_t *buf, size_t n,
         }
     }
 
         }
     }
 
-    if (srcLen == wxNO_LEN && buf && (len < n))
-        *buf = 0;
+    if ( isNulTerminated )
+    {
+        // Add the trailing NUL in this case if we have a large enough buffer.
+        if ( buf && (len < n) )
+            *buf = 0;
 
 
-    return len + 1;
+        // And count it in any case.
+        len++;
+    }
+
+    return len;
 }
 
 static inline bool isoctal(wchar_t wch)
 }
 
 static inline bool isoctal(wchar_t wch)