]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/stringops.cpp
fixed wxXmlResource::Load's detection of filenames to be done as early as possible
[wxWidgets.git] / src / common / stringops.cpp
index 08d451492e813a0fd3ce9a655ccfec03ab9e3389..9ccd34d95cba6554e405d8e9094be392bf6c1bf1 100644 (file)
@@ -34,7 +34,7 @@
 // UTF-8 sequences lengths
 // ---------------------------------------------------------------------------
 
-unsigned char wxStringOperationsUtf8::ms_utf8IterTable[256] = {
+const unsigned char wxStringOperationsUtf8::ms_utf8IterTable[256] = {
     // single-byte sequences (ASCII):
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  // 00..0F
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  // 10..1F
@@ -131,7 +131,16 @@ bool wxStringOperationsUtf8::IsValidUtf8String(const char *str, size_t len)
             if ( !(b >= 0x80 && b <= 0xBF ) )
                 return false;
         }
-        else if ( b <= 0xEF ) // E1..EF
+        else if ( b == 0xED )
+        {
+            b = *(++c);
+            if ( !(b >= 0x80 && b <= 0x9F ) )
+                return false;
+            b = *(++c);
+            if ( !(b >= 0x80 && b <= 0xBF ) )
+                return false;
+        }
+        else if ( b <= 0xEF ) // E1..EC EE..EF
         {
             for ( int i = 0; i < 2; ++i )
             {
@@ -194,7 +203,7 @@ bool wxStringOperationsUtf8::IsValidUtf8LeadByte(unsigned char c)
 //     code in single place
 wxUniChar::Utf8CharBuffer wxUniChar::AsUTF8() const
 {
-    Utf8CharBuffer buf;
+    Utf8CharBuffer buf = { "" }; // init to avoid g++ 4.1 warning with -O2
     char *out = buf.data;
 
     value_type code = GetValue();