diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-05-25 09:32:13 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-05-25 09:32:13 (GMT) |
commit | 53e89dcb06d57874c1fd1aff0bca30a01f351cc0 (patch) | |
tree | 4e258563dbd69db853bfaa850d7a82737c432960 /generic/tclExecute.c | |
parent | 6de32c896abb44a00ad7368892924e9c9de5db11 (diff) | |
parent | d3eb8cf5e3d7b1535ba73e95dee737c08a36d3bb (diff) | |
download | tcl-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.c | 6 |
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; } |