summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-05-25 09:32:13 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-05-25 09:32:13 (GMT)
commit53e89dcb06d57874c1fd1aff0bca30a01f351cc0 (patch)
tree4e258563dbd69db853bfaa850d7a82737c432960 /generic/tclExecute.c
parent6de32c896abb44a00ad7368892924e9c9de5db11 (diff)
parentd3eb8cf5e3d7b1535ba73e95dee737c08a36d3bb (diff)
downloadtcl-53e89dcb06d57874c1fd1aff0bca30a01f351cc0.zip
tcl-53e89dcb06d57874c1fd1aff0bca30a01f351cc0.tar.gz
tcl-53e89dcb06d57874c1fd1aff0bca30a01f351cc0.tar.bz2
Fix compiled "string is <class>" for characters > U+FFFF. Add testcase exposing this bug.
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 5708772..cc366e7 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -5543,9 +5543,11 @@ TEBCresume(
ustring1 = Tcl_GetUnicodeFromObj(valuePtr, &length);
match = 1;
if (length > 0) {
+ int ch;
end = ustring1 + length;
- for (p=ustring1 ; p<end ; p++) {
- if (!tclStringClassTable[opnd].comparator(*p)) {
+ for (p=ustring1 ; p<end ; ) {
+ p += TclUniCharToUCS4(p, &ch);
+ if (!tclStringClassTable[opnd].comparator(ch)) {
match = 0;
break;
}