Fix detecting of UTF8 Sequences
authorWilfried Goesgens <dothebart@citadel.org>
Fri, 19 Aug 2011 17:12:32 +0000 (17:12 +0000)
committerWilfried Goesgens <dothebart@citadel.org>
Fri, 19 Aug 2011 17:12:32 +0000 (17:12 +0000)
  - we need to exactly check for both highest bits to be set, not one of them.

libcitadel/lib/stringbuf.c

index aadd92d1913ad957b2beb79cf2ccf3da2d69cb37..02b715397725f29a23d8c9cd69096f351a98c9dc 100644 (file)
@@ -3331,7 +3331,7 @@ static inline int Ctdl_GetUtf8SequenceLength(const char *CharS, const char *Char
        int n = 0;
         unsigned char test = (1<<7);
 
-       if ((*CharS & 0xC0) == 0) 
+       if ((*CharS & 0xC0) != 0xC0) 
                return 1;
 
        while ((n < 8) && 
@@ -3354,7 +3354,7 @@ static inline int Ctdl_GetUtf8SequenceLength(const char *CharS, const char *Char
 static inline int Ctdl_IsUtf8SequenceStart(const char Char)
 {
 /** 11??.???? indicates an UTF8 Sequence. */
-       return ((Char & 0xC0) != 0);
+       return ((Char & 0xC0) == 0xC0);
 }
 
 /**