diff options
author | dgp <dgp@users.sourceforge.net> | 2018-02-23 16:55:49 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2018-02-23 16:55:49 (GMT) |
commit | 85233a46935b192d7baf5fa81c9ad21bfebeca77 (patch) | |
tree | 7a40c869d6db73a096af09bd6033e49b1810cec0 | |
parent | 189d0a83d2df3b9f47e30232bdf377d4daeaba2b (diff) | |
download | tcl-85233a46935b192d7baf5fa81c9ad21bfebeca77.zip tcl-85233a46935b192d7baf5fa81c9ad21bfebeca77.tar.gz tcl-85233a46935b192d7baf5fa81c9ad21bfebeca77.tar.bz2 |
[8e6a9ac221] Stop false matching with bytearrays. (string-11.55)
-rw-r--r-- | generic/tclUtil.c | 3 | ||||
-rw-r--r-- | tests/string.test | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/generic/tclUtil.c b/generic/tclUtil.c index 34d4be2..d782ea1 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -2340,7 +2340,8 @@ TclStringMatchObj( udata = Tcl_GetUnicodeFromObj(strObj, &length); uptn = Tcl_GetUnicodeFromObj(ptnObj, &plen); match = TclUniCharMatch(udata, length, uptn, plen, flags); - } else if (TclIsPureByteArray(strObj) && !flags) { + } else if (TclIsPureByteArray(strObj) && TclIsPureByteArray(ptnObj) + && !flags) { unsigned char *data, *ptn; data = Tcl_GetByteArrayFromObj(strObj, &length); diff --git a/tests/string.test b/tests/string.test index 7a7a749..39abd86 100644 --- a/tests/string.test +++ b/tests/string.test @@ -1111,6 +1111,9 @@ test string-11.54 {string match, failure} { [string match *a*l*\u0000*cba* $longString] \ [string match *===* $longString] } {0 1 1 1 0 0} +test string-11.55 {string match, invalid binary optimization} { + [format string] match \u0141 [binary format c 65] +} 0 test string-12.1 {string range} { list [catch {string range} msg] $msg |