diff options
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 |
