diff options
| -rw-r--r-- | generic/tclUtf.c | 4 | ||||
| -rw-r--r-- | tests/utf.test | 8 |
2 files changed, 9 insertions, 3 deletions
diff --git a/generic/tclUtf.c b/generic/tclUtf.c index 02952cb..712beaa 100644 --- a/generic/tclUtf.c +++ b/generic/tclUtf.c @@ -1398,6 +1398,7 @@ UCS4ToUpper( ch -= GetDelta(info); } } + /* Clear away extension bits, if any */ return ch & 0x1FFFFF; } @@ -1436,6 +1437,7 @@ UCS4ToLower( ch += GetDelta(info); } } + /* Clear away extension bits, if any */ return ch & 0x1FFFFF; } @@ -1482,6 +1484,7 @@ UCS4ToTitle( ch -= GetDelta(info); } } + /* Clear away extension bits, if any */ return ch & 0x1FFFFF; } @@ -1681,6 +1684,7 @@ Tcl_UniCharIsControl( { #if TCL_UTF_MAX > 3 if (UNICODE_OUT_OF_RANGE(ch)) { + /* Clear away extension bits, if any */ ch &= 0x1FFFFF; if ((ch == 0xE0001) || ((ch >= 0xE0020) && (ch <= 0xE007F))) { return 1; diff --git a/tests/utf.test b/tests/utf.test index 6757608..77fb8d7 100644 --- a/tests/utf.test +++ b/tests/utf.test @@ -1336,7 +1336,7 @@ test utf-19.1 {TclUniCharLen} -body { unset -nocomplain foo } -result {1 4} -test utf-20.1 {TclUniCharNcmp} {fullutf knownBug} { +test utf-20.1 {TclUniCharNcmp} {ucs4} { string compare [string range [format %c 0xFFFF] 0 0] [string range [format %c 0x10000] 0 0] } -1 @@ -1457,8 +1457,10 @@ UniCharCaseCmpTest < a b UniCharCaseCmpTest > b a UniCharCaseCmpTest > B a UniCharCaseCmpTest > aBcB abca -UniCharCaseCmpTest < \uFFFF [format %c 0x10000] {fullutf knownBug} -UniCharCaseCmpTest < \uFFFF \U10000 {Uesc fullutf knownBug} +UniCharCaseCmpTest < \uFFFF [format %c 0x10000] ucs4 +UniCharCaseCmpTest < \uFFFF \U10000 {Uesc ucs4} +UniCharCaseCmpTest > [format %c 0x10000] \uFFFF ucs4 +UniCharCaseCmpTest > \U10000 \uFFFF {Uesc ucs4} |
