summaryrefslogtreecommitdiffstats
path: root/generic/tclUtf.c
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2017-06-05 23:20:36 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2017-06-05 23:20:36 (GMT)
commitf8223fa81718da26562fff851b4a56d18b58a62a (patch)
tree2c47bdd025eab065e5f559ade49795a3acaf938e /generic/tclUtf.c
parente9d31a334b4cbd18716b3c1eacf7f516cbc7286d (diff)
parent0b178367ba3b9a10d44f89025c89292a4ea49b20 (diff)
downloadtcl-dkf_expose_ptrgetvar.zip
tcl-dkf_expose_ptrgetvar.tar.gz
tcl-dkf_expose_ptrgetvar.tar.bz2
Diffstat (limited to 'generic/tclUtf.c')
-rw-r--r--generic/tclUtf.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index b33bf6a..eec4068 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -292,7 +292,9 @@ Tcl_UtfToUniChar(
*/
*chPtr = (Tcl_UniChar) (((byte & 0x1F) << 6) | (src[1] & 0x3F));
- return 2;
+ if ((*chPtr == 0) || (*chPtr > 0x7f)) {
+ return 2;
+ }
}
/*
@@ -307,7 +309,9 @@ Tcl_UtfToUniChar(
*chPtr = (Tcl_UniChar) (((byte & 0x0F) << 12)
| ((src[1] & 0x3F) << 6) | (src[2] & 0x3F));
- return 3;
+ if (*chPtr > 0x7ff) {
+ return 3;
+ }
}
/*
@@ -324,7 +328,9 @@ Tcl_UtfToUniChar(
*chPtr = (Tcl_UniChar) (((byte & 0x0E) << 18) | ((src[1] & 0x3F) << 12)
| ((src[2] & 0x3F) << 6) | (src[3] & 0x3F));
- return 4;
+ if ((*chPtr <= 0x10ffff) && (*chPtr > 0xffff)) {
+ return 4;
+ }
}
/*