From 1d6a94f9f809cab704789272afceeefb15e4b0db Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 11 Dec 2019 08:52:58 +0000 Subject: Fix bug in tclEncoding.c, only manifesting in testcase encoding-15.4 for TCL_UTF_MAX=6. (knownBug, fixed now) --- generic/tclEncoding.c | 12 +++--------- tests/encoding.test | 2 +- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 0d03e2a..6740565 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -2418,16 +2418,10 @@ UtfToUtfProc( *dst++ = (char) (((*chPtr >> 6) | 0x80) & 0xBF); *dst++ = (char) ((*chPtr | 0x80) & 0xBF); continue; - } else if (TCL_UTF_MAX <= 4) { - int full = (((*chPtr & 0x3FF) << 10) | (low & 0x3FF)) + 0x10000; - *dst++ = (char) (((full >> 18) | 0xF0) & 0xF7); - *dst++ = (char) (((full >> 12) | 0x80) & 0xBF); - *dst++ = (char) (((full >> 6) | 0x80) & 0xBF); - *dst++ = (char) ((full | 0x80) & 0xBF); - *chPtr = 0; - src += len; - continue; } + src += len; + dst += Tcl_UniCharToUtf(*chPtr, dst); + *chPtr = low; } dst += Tcl_UniCharToUtf(*chPtr, dst); } diff --git a/tests/encoding.test b/tests/encoding.test index 1eb6ec5..643d493 100644 --- a/tests/encoding.test +++ b/tests/encoding.test @@ -321,7 +321,7 @@ test encoding-15.3 {UtfToUtfProc null character input} teststringbytes { binary scan [teststringbytes $y] H* z set z } c080 -test encoding-15.4 {UtfToUtfProc emoji character input} -constraints knownBug -body { +test encoding-15.4 {UtfToUtfProc emoji character input} -body { set x \xED\xA0\xBD\xED\xB8\x82 set y [encoding convertfrom utf-8 \xED\xA0\xBD\xED\xB8\x82] list [string length $x] $y -- cgit v0.12