summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--generic/tclUniData.c6
-rw-r--r--tools/uniParse.tcl6
3 files changed, 20 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e2b3d47..692b3a5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2012-01-22 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * tools/uniClass.tcl: [Frq 3473670]: Various Unicode-related
+ * tools/uniParse.tcl: speedups/robustness. Enhanced tools to
+ * generic/tclUniData.c: be able to handle characters > 0xffff
+ * generic/tclUtf.c: Done in all branches in order to simplify
+ * generic/regc_locale.c: merges for new Unicode versions (such as 6.1)
+
2012-01-19 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tcl.h: [Bug-3474726]: Eliminate detection of struct
diff --git a/generic/tclUniData.c b/generic/tclUniData.c
index 566e694..fcd81bb 100644
--- a/generic/tclUniData.c
+++ b/generic/tclUniData.c
@@ -1334,6 +1334,12 @@ static CONST int groups[] = {
-2768575, 1859714, -9044927, -10823615, 18, 17, 10305, 10370
};
+#if UTF_MAX_LEN > 3
+# define UNICODE_OUT_OF_RANGE(ch) (((ch) & 0x1fffff) >= 0x2fa20)
+#else
+# define UNICODE_OUT_OF_RANGE(ch) (((ch) & 0x1f0000) != 0)
+#endif
+
/*
* The following constants are used to determine the category of a
* Unicode character.
diff --git a/tools/uniParse.tcl b/tools/uniParse.tcl
index a7cc1ee..86f6d04 100644
--- a/tools/uniParse.tcl
+++ b/tools/uniParse.tcl
@@ -337,6 +337,12 @@ static CONST int groups\[\] = {"
puts $f $line
puts -nonewline $f "};
+#if UTF_MAX_LEN > 3
+# define UNICODE_OUT_OF_RANGE(ch) (((ch) & 0x1fffff) >= [format 0x%x $next])
+#else
+# define UNICODE_OUT_OF_RANGE(ch) (((ch) & 0x1f0000) != 0)
+#endif
+
/*
* The following constants are used to determine the category of a
* Unicode character.