summaryrefslogtreecommitdiffstats
path: root/generic/tclEncoding.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-12-16 10:23:56 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-12-16 10:23:56 (GMT)
commitfd98096770210ed4e5e1ddbf93c7d3860716efcb (patch)
tree1e539e5a259802446c8e6666e6c119188397ae1a /generic/tclEncoding.c
parentedee881fb26816194a320932f55e095b077d0e94 (diff)
downloadtcl-fd98096770210ed4e5e1ddbf93c7d3860716efcb.zip
tcl-fd98096770210ed4e5e1ddbf93c7d3860716efcb.tar.gz
tcl-fd98096770210ed4e5e1ddbf93c7d3860716efcb.tar.bz2
Addendum to [https://core.tcl-lang.org/tips/doc/trunk/tip/601.md|TIP #601]. Add check for characters > U+10FFFF in utf-32. Since utf-8 cannot handle that, either replace it with the replacement character (-nocomplain) or throw an exception (-strict).
Diffstat (limited to 'generic/tclEncoding.c')
-rw-r--r--generic/tclEncoding.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index 78b0b9d..f81b0eb 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -2565,7 +2565,7 @@ Utf32ToUtfProc(
} else {
ch = (src[0] & 0xFF) << 24 | (src[1] & 0xFF) << 16 | (src[2] & 0xFF) << 8 | (src[3] & 0xFF);
}
- if (ch >= 0x10FFFF || (((flags & TCL_ENCODING_STRICT) == TCL_ENCODING_STRICT)
+ if ((unsigned)ch > 0x10FFFF || (((flags & TCL_ENCODING_STRICT) == TCL_ENCODING_STRICT)
&& !Tcl_UniCharIsUnicode(ch))) {
if (STOPONERROR) {
result = TCL_CONVERT_SYNTAX;