]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/convauto.cpp
fixing osx_carbon
[wxWidgets.git] / src / common / convauto.cpp
index c684613f4c93fa34c4cd667abc67f069184bd609..8620d4e02efa5f533d09a78f4bb3a144144202d6 100644 (file)
     #pragma hdrstop
 #endif
 
-#if wxUSE_WCHAR_T
-
-#ifndef WX_PRECOMP
-    #include "wx/wx.h"
-#endif //WX_PRECOMP
-
 #include "wx/convauto.h"
 
 // we use latin1 by default as it seems the least bad choice: the files we need
@@ -107,11 +101,13 @@ wxConvAuto::BOMType wxConvAuto::DetectBOM(const char *src, size_t srcLen)
 
             if ( src[0] == '\x00' && src[1] == '\x00' )
             {
-                // this could only be UTF-32BE
-                if ( srcLen == 3 && src[2] == '\xFE' )
-                    return BOM_Unknown;
-            }
+                // this could only be UTF-32BE, check that the data we have so
+                // far allows for it
+                if ( srcLen == 3 && src[2] != '\xFE' )
+                    return BOM_None;
 
+                return BOM_Unknown;
+            }
             break;
 
         default:
@@ -229,7 +225,7 @@ void wxConvAuto::SkipBOM(const char **src, size_t *len) const
 
 bool wxConvAuto::InitFromInput(const char *src, size_t len)
 {
-    m_bomType = DetectBOM(src, len);
+    m_bomType = DetectBOM(src, len == wxNO_LEN ? strlen(src) : len);
     if ( m_bomType == BOM_Unknown )
         return false;
 
@@ -316,5 +312,3 @@ wxConvAuto::FromWChar(char *dst, size_t dstLen,
 
     return m_conv->FromWChar(dst, dstLen, src, srcLen);
 }
-
-#endif // wxUSE_WCHAR_T