diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-03-14 20:59:28 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-03-14 20:59:28 (GMT) |
| commit | 842878d2d0eee1bafcd57bc809ddac15b27c0510 (patch) | |
| tree | c41ab0d45b6b9a51796c1cd304c2315de98075d0 /generic/tclEncoding.c | |
| parent | da96c5304100d70d932bcb73796c068d7e416cae (diff) | |
| parent | d7fe4af6212051638be9eb9f6912e844e51fb22c (diff) | |
| download | tcl-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.c | 12 |
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 |
