]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/strconv.cpp
Better fix for 'int i' used twice in the same block.
[wxWidgets.git] / src / common / strconv.cpp
index 40bc93d8716be48732e200d33fc2425bc5123e4f..3154d94232d6ce4a093da14f24f84c8d5355b2bb 100644 (file)
 #include "wx/utils.h"
 
 #ifdef __WXMAC__
+#ifndef __DARWIN__
 #include <ATSUnicode.h>
 #include <TextCommon.h>
 #include <TextEncodingConverter.h>
+#endif
 
 #include  "wx/mac/private.h"  // includes mac headers
 #endif
@@ -1344,15 +1346,26 @@ private:
     static bool ms_wcNeedsSwap;
 };
 
+// make the constructor available for unit testing
+WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_iconv( const wxChar* name )
+{
+    wxMBConv_iconv* result = new wxMBConv_iconv( name );
+    if ( !result->IsOk() )
+    {
+        delete result;
+        return 0;
+    }
+    return result;
+}
+
 const char *wxMBConv_iconv::ms_wcCharsetName = NULL;
 bool wxMBConv_iconv::ms_wcNeedsSwap = false;
 
 wxMBConv_iconv::wxMBConv_iconv(const wxChar *name)
 {
-    // Do it the hard way
-    char cname[100];
-    for (size_t i = 0; i < wxStrlen(name)+1; i++)
-        cname[i] = (char) name[i];
+    // iconv operates with chars, not wxChars, but luckily it uses only ASCII
+    // names for the charsets
+    const wxCharBuffer cname(wxString(name).ToAscii());
 
     // check for charset that represents wchar_t:
     if (ms_wcCharsetName == NULL)
@@ -2403,6 +2416,18 @@ public:
     DECLARE_NO_COPY_CLASS(wxMBConv_wxwin)
 };
 
+// make the constructors available for unit testing
+WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_wxwin( const wxChar* name )
+{
+    wxMBConv_wxwin* result = new wxMBConv_wxwin( name );
+    if ( !result->IsOk() )
+    {
+        delete result;
+        return 0;
+    }
+    return result;
+}
+
 #endif // wxUSE_FONTMAP
 
 // ============================================================================