diff options
Diffstat (limited to 'generic/tclUtf.c')
| -rw-r--r-- | generic/tclUtf.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/generic/tclUtf.c b/generic/tclUtf.c index 9522f11..75552f6 100644 --- a/generic/tclUtf.c +++ b/generic/tclUtf.c @@ -352,7 +352,7 @@ Tcl_Char16ToUtfDString( */ static const unsigned short cp1252[32] = { - 0x20ac, 0x81, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, + 0x20AC, 0x81, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x8D, 0x017D, 0x8F, 0x90, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x2DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x9D, 0x017E, 0x0178 @@ -525,7 +525,7 @@ Tcl_UtfToChar16( unsigned short high = (((byte & 0x07) << 8) | ((src[1] & 0x3F) << 2) | ((src[2] & 0x3F) >> 4)) - 0x40; if (high >= 0x400) { - /* out of range, < 0x10000 or > 0x10ffff */ + /* out of range, < 0x10000 or > 0x10FFFF */ } else { /* produce high surrogate, advance source pointer */ *chPtr = 0xD800 + high; @@ -790,7 +790,7 @@ Tcl_UtfFindFirst( #if TCL_UTF_MAX <= 3 if ((fullchar != ch) && (find >= 0xD800) && (len < 3)) { len += TclUtfToUniChar(src + len, &find); - fullchar = (((fullchar & 0x3ff) << 10) | (find & 0x3ff)) + 0x10000; + fullchar = (((fullchar & 0x3FF) << 10) | (find & 0x3FF)) + 0x10000; } #endif if (fullchar == ch) { @@ -838,7 +838,7 @@ Tcl_UtfFindLast( #if TCL_UTF_MAX <= 3 if ((fullchar != ch) && (find >= 0xD800) && (len < 3)) { len += TclUtfToUniChar(src + len, &find); - fullchar = (((fullchar & 0x3ff) << 10) | (find & 0x3ff)) + 0x10000; + fullchar = (((fullchar & 0x3FF) << 10) | (find & 0x3FF)) + 0x10000; } #endif if (fullchar == ch) { @@ -976,7 +976,7 @@ Tcl_UniCharAtIndex( if ((ch >= 0xD800) && (len < 3)) { /* If last Tcl_UniChar was a high surrogate, combine with low surrogate */ (void)TclUtfToUniChar(src, &ch); - fullchar = (((fullchar & 0x3ff) << 10) | (ch & 0x3ff)) + 0x10000; + fullchar = (((fullchar & 0x3FF) << 10) | (ch & 0x3FF)) + 0x10000; } #endif return fullchar; @@ -1114,7 +1114,7 @@ Tcl_UtfToUpper( if ((ch >= 0xD800) && (len < 3)) { len += TclUtfToUniChar(src + len, &ch); /* Combine surrogates */ - upChar = (((upChar & 0x3ff) << 10) | (ch & 0x3ff)) + 0x10000; + upChar = (((upChar & 0x3FF) << 10) | (ch & 0x3FF)) + 0x10000; } #endif upChar = Tcl_UniCharToUpper(upChar); @@ -1176,7 +1176,7 @@ Tcl_UtfToLower( if ((ch >= 0xD800) && (len < 3)) { len += TclUtfToUniChar(src + len, &ch); /* Combine surrogates */ - lowChar = (((lowChar & 0x3ff) << 10) | (ch & 0x3ff)) + 0x10000; + lowChar = (((lowChar & 0x3FF) << 10) | (ch & 0x3FF)) + 0x10000; } #endif lowChar = Tcl_UniCharToLower(lowChar); @@ -1241,7 +1241,7 @@ Tcl_UtfToTitle( if ((ch >= 0xD800) && (len < 3)) { len += TclUtfToUniChar(src + len, &ch); /* Combine surrogates */ - titleChar = (((titleChar & 0x3ff) << 10) | (ch & 0x3ff)) + 0x10000; + titleChar = (((titleChar & 0x3FF) << 10) | (ch & 0x3FF)) + 0x10000; } #endif titleChar = Tcl_UniCharToTitle(titleChar); @@ -1261,7 +1261,7 @@ Tcl_UtfToTitle( if ((ch >= 0xD800) && (len < 3)) { len += TclUtfToUniChar(src + len, &ch); /* Combine surrogates */ - lowChar = (((lowChar & 0x3ff) << 10) | (ch & 0x3ff)) + 0x10000; + lowChar = (((lowChar & 0x3FF) << 10) | (ch & 0x3FF)) + 0x10000; } #endif /* Special exception for Georgian Asomtavruli chars, no titlecase. */ @@ -1821,7 +1821,7 @@ Tcl_UniCharIsControl( { if (UNICODE_OUT_OF_RANGE(ch)) { ch &= 0x1FFFFF; - if ((ch == 0xE0001) || ((ch >= 0xE0020) && (ch <= 0xE007f))) { + if ((ch == 0xE0001) || ((ch >= 0xE0020) && (ch <= 0xE007F))) { return 1; } if ((ch >= 0xF0000) && ((ch & 0xFFFF) <= 0xFFFD)) { @@ -1879,8 +1879,7 @@ Tcl_UniCharIsGraph( int ch) /* Unicode character to test. */ { if (UNICODE_OUT_OF_RANGE(ch)) { - ch &= 0x1FFFFF; - return (ch >= 0xE0100) && (ch <= 0xE01EF); + return ((unsigned)((ch & 0x1FFFFF) - 0xE0100) <= 0xEF); } return ((GRAPH_BITS >> GetCategory(ch)) & 1); } @@ -1932,8 +1931,7 @@ Tcl_UniCharIsPrint( int ch) /* Unicode character to test. */ { if (UNICODE_OUT_OF_RANGE(ch)) { - ch &= 0x1FFFFF; - return (ch >= 0xE0100) && (ch <= 0xE01EF); + return ((unsigned)((ch & 0x1FFFFF) - 0xE0100) <= 0xEF); } return (((GRAPH_BITS|SPACE_BITS) >> GetCategory(ch)) & 1); } |
