diff options
author | dgp <dgp@users.sourceforge.net> | 2018-02-23 17:00:03 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2018-02-23 17:00:03 (GMT) |
commit | 468041eef83fe018271ded25cba571f57372fe7f (patch) | |
tree | f3de5c0dc60e9b23de83f9fdad51e6704d30b6c2 | |
parent | 455b61dce391118995a7762609a6f42035cf43a4 (diff) | |
parent | 85233a46935b192d7baf5fa81c9ad21bfebeca77 (diff) | |
download | tcl-468041eef83fe018271ded25cba571f57372fe7f.zip tcl-468041eef83fe018271ded25cba571f57372fe7f.tar.gz tcl-468041eef83fe018271ded25cba571f57372fe7f.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 396f992..3424295 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -2530,7 +2530,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 53f1cfb..fc8dabb 100644 --- a/tests/string.test +++ b/tests/string.test @@ -1192,6 +1192,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 |