summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-01-21 16:26:40 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-01-21 16:26:40 (GMT)
commitf6c924bc7323104fcefc728b1f6407e70cf585ae (patch)
tree64bf502654f02e921d34ea97ee22a5b814331978
parentde64389a11b58cab27c6ba74a0d8b090c3fed91c (diff)
downloadtcl-f6c924bc7323104fcefc728b1f6407e70cf585ae.zip
tcl-f6c924bc7323104fcefc728b1f6407e70cf585ae.tar.gz
tcl-f6c924bc7323104fcefc728b1f6407e70cf585ae.tar.bz2
Optimize Tcl_UniCharIsControl(). Don't worry about range >= U+F0000, that's for TCL_UTF_MAX>3, which is unsupported for 8.6.
-rw-r--r--generic/regc_locale.c3
-rw-r--r--generic/tclUtf.c8
2 files changed, 2 insertions, 9 deletions
diff --git a/generic/regc_locale.c b/generic/regc_locale.c
index 449cff6..c0ae530 100644
--- a/generic/regc_locale.c
+++ b/generic/regc_locale.c
@@ -302,8 +302,7 @@ static const crange controlRangeTable[] = {
{0x202A, 0x202E}, {0x2060, 0x2064}, {0x2066, 0x206F}, {0xE000, 0xF8FF},
{0xFFF9, 0xFFFB}
#if CHRBITS > 16
- ,{0x13430, 0x1343F}, {0x1BCA0, 0x1BCA3}, {0x1D173, 0x1D17A}, {0xE0020, 0xE007F},
- {0xF0000, 0xFFFFD}, {0x100000, 0x10FFFD}
+ ,{0x13430, 0x1343F}, {0x1BCA0, 0x1BCA3}, {0x1D173, 0x1D17A}, {0xE0020, 0xE007F}
#endif
};
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index 196c5fb..736da66 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -1805,13 +1805,7 @@ Tcl_UniCharIsControl(
if (UNICODE_OUT_OF_RANGE(ch)) {
/* Clear away extension bits, if any */
ch &= 0x1FFFFF;
- if ((ch == 0xE0001) || ((ch >= 0xE0020) && (ch <= 0xE007F))) {
- return 1;
- }
- if ((ch >= 0xF0000) && ((ch & 0xFFFF) <= 0xFFFD)) {
- return 1;
- }
- return 0;
+ return ((ch == 0xE0001) || ((unsigned)(ch - 0xE0020) <= 0x5F));
}
#endif
return ((CONTROL_BITS >> GetCategory(ch)) & 1);