diff options
Diffstat (limited to 'generic/tclEncoding.c')
-rw-r--r-- | generic/tclEncoding.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index d430b32..76dba75 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -2353,7 +2353,9 @@ UtfToUtfProc( src += 1; dst += Tcl_UniCharToUtf(*chPtr, dst); } else { - src += TclUtfToUniChar(src, chPtr); + int n = TclUtfToUniChar(src, chPtr); + src += n; + if (!n) numChars--; dst += Tcl_UniCharToUtf(*chPtr, dst); } } @@ -2446,7 +2448,9 @@ UnicodeToUtfProc( if (*chPtr && *chPtr < 0x80) { *dst++ = (*chPtr & 0xFF); } else { - dst += Tcl_UniCharToUtf(*chPtr, dst); + int n = Tcl_UniCharToUtf(*chPtr, dst); + dst += n; + if (!n) --numChars;/* Don't count high surrogates */ } src += sizeof(Tcl_UniChar); } |