summaryrefslogtreecommitdiffstats
path: root/generic/tclEncoding.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclEncoding.c')
-rw-r--r--generic/tclEncoding.c8
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);
}