summaryrefslogtreecommitdiffstats
path: root/generic/tclEncoding.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-03-14 20:59:28 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-03-14 20:59:28 (GMT)
commit842878d2d0eee1bafcd57bc809ddac15b27c0510 (patch)
treec41ab0d45b6b9a51796c1cd304c2315de98075d0 /generic/tclEncoding.c
parentda96c5304100d70d932bcb73796c068d7e416cae (diff)
parentd7fe4af6212051638be9eb9f6912e844e51fb22c (diff)
downloadtcl-842878d2d0eee1bafcd57bc809ddac15b27c0510.zip
tcl-842878d2d0eee1bafcd57bc809ddac15b27c0510.tar.gz
tcl-842878d2d0eee1bafcd57bc809ddac15b27c0510.tar.bz2
Merge 8.7.
Fix 2 test-cases which were failing for TCL_UTF_MAX=6
Diffstat (limited to 'generic/tclEncoding.c')
-rw-r--r--generic/tclEncoding.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index 74e7513..0827907 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -2672,7 +2672,10 @@ UtfToUcs2Proc(
* output buffer. */
{
const char *srcStart, *srcEnd, *srcClose, *dstStart, *dstEnd;
- int result, numChars, len;
+ int result, numChars;
+#if TCL_UTF_MAX <= 4
+ int len;
+#endif
Tcl_UniChar ch = 0;
srcStart = src;
@@ -2700,11 +2703,18 @@ UtfToUcs2Proc(
result = TCL_CONVERT_NOSPACE;
break;
}
+#if TCL_UTF_MAX <= 4
src += (len = TclUtfToUniChar(src, &ch));
if ((ch >= 0xD800) && (len < 3)) {
src += TclUtfToUniChar(src, &ch);
ch = 0xFFFD;
}
+#else
+ src += TclUtfToUniChar(src, &ch);
+ if (ch > 0xFFFF) {
+ ch = 0xFFFD;
+ }
+#endif
/*
* Need to handle this in a way that won't cause misalignment by