added SUB/SUP tags to the list of supported ones
[wxWidgets.git] / src / common / string.cpp
index 20608e466becb8cb9bcdc74f6e8222d03988cecd..8f20b9ac13d3a347fae78413cab446ac81078d71 100644 (file)
@@ -1706,10 +1706,32 @@ bool wxString::ToULong(unsigned long *val, int base) const
     return wxStringToIntType(c_str(), val, base, wxStrtoul);
 }
 
+bool wxString::ToLongLong(wxLongLong_t *val, int base) const
+{
+#ifdef wxHAS_STRTOLL
+    return wxStringToIntType(c_str(), val, base, wxStrtoll);
+#else
+    // TODO: implement this ourselves
+    return false;
+#endif // wxHAS_STRTOLL
+}
+
+bool wxString::ToULongLong(wxULongLong_t *val, int base) const
+{
+#ifdef wxHAS_STRTOLL
+    return wxStringToIntType(c_str(), val, base, wxStrtoull);
+#else
+    // TODO: implement this ourselves
+    return false;
+#endif
+}
+
 bool wxString::ToDouble(double *val) const
 {
     wxCHECK_MSG( val, false, _T("NULL pointer in wxString::ToDouble") );
 
+    errno = 0;
+
     const wxChar *start = c_str();
     wxChar *end;
     *val = wxStrtod(start, &end);
@@ -1793,9 +1815,11 @@ int wxString::PrintfV(const wxChar* pszFormat, va_list argptr)
             // current size of the buffer
             size *= 2;
         }
-        else if ( len > size )
+        else if ( len >= size )
         {
-            size = len;
+            // some vsnprintf() implementations NUL-terminate the buffer and
+            // some don't in len == size case, to be safe always add 1
+            size = len + 1;
         }
         else // ok, there was enough space
         {