diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-02-06 13:01:11 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-02-06 13:01:11 (GMT) |
| commit | 2fa0ec4d0bb7959063e94a0bd03962d40aeac38d (patch) | |
| tree | 049d6f7c4be2f07fc954d88018d5aa41751fc89e /generic/tclEncoding.c | |
| parent | 7fc88ec260bb481aed05458cf999aa3b812edb40 (diff) | |
| download | tcl-2fa0ec4d0bb7959063e94a0bd03962d40aeac38d.zip tcl-2fa0ec4d0bb7959063e94a0bd03962d40aeac38d.tar.gz tcl-2fa0ec4d0bb7959063e94a0bd03962d40aeac38d.tar.bz2 | |
Proposed fix for [80d4c1c7e5]: Isolated surrogates are not replaced when encoding to / from utf-8
Diffstat (limited to 'generic/tclEncoding.c')
| -rw-r--r-- | generic/tclEncoding.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index d780299..63ebdf4 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -2485,7 +2485,6 @@ UtfToUtfProc( flags |= PTR2INT(clientData); dstEnd = dst + dstLen - ((flags & ENCODING_UTF) ? TCL_UTF_MAX : 6); - profile = ENCODING_PROFILE_GET(flags); for (numChars = 0; src < srcEnd && numChars <= charLimit; numChars++) { @@ -2596,6 +2595,8 @@ UtfToUtfProc( result = (flags & ENCODING_INPUT) ? TCL_CONVERT_SYNTAX : TCL_CONVERT_UNKNOWN; src = saveSrc; break; + } else if (PROFILE_REPLACE(profile) && SURROGATE(ch)) { + ch = UNICODE_REPLACE_CHAR; } dst += Tcl_UniCharToUtf(ch, dst); } |
