From 4ad1d554a92681b3d78876608ad0671c76098978 Mon Sep 17 00:00:00 2001 From: hobbs Date: Thu, 21 Aug 2008 23:19:02 +0000 Subject: * tests/regexp.test, tests/regexpComp.test: correct re2glob ***= * generic/tclUtil.c (TclReToGlob): translation from exact to anywhere-in-string match. [Bug 2065115] --- ChangeLog | 6 ++++++ generic/tclUtil.c | 7 +++---- tests/regexp.test | 27 ++++++++++++++++++++++++++- tests/regexpComp.test | 39 ++++++++++++++++++++++++++++++++++++++- 4 files changed, 73 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14f64f2..7504d60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-21 Jeff Hobbs + + * tests/regexp.test, tests/regexpComp.test: correct re2glob ***= + * generic/tclUtil.c (TclReToGlob): translation from exact + to anywhere-in-string match. [Bug 2065115] + 2008-08-20 Daniel Steffen * generic/tclTest.c (TestconcatobjCmd): fix use of internal-only diff --git a/generic/tclUtil.c b/generic/tclUtil.c index e2f01a4..9464cd5 100644 --- a/generic/tclUtil.c +++ b/generic/tclUtil.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUtil.c,v 1.97.2.1 2008/08/17 14:12:35 msofer Exp $ + * RCS: @(#) $Id: tclUtil.c,v 1.97.2.2 2008/08/21 23:19:05 hobbs Exp $ */ #include "tclInt.h" @@ -3278,10 +3278,9 @@ TclReToGlob( */ if ((reStrLen >= 4) && (memcmp("***=", reStr, 4) == 0)) { - if (exactPtr) { - *exactPtr = 1; - } + Tcl_DStringAppend(dsPtr, "*", 1); Tcl_DStringAppend(dsPtr, reStr + 4, reStrLen - 4); + Tcl_DStringAppend(dsPtr, "*", 1); return TCL_OK; } diff --git a/tests/regexp.test b/tests/regexp.test index 92b6c6a..295d83c 100644 --- a/tests/regexp.test +++ b/tests/regexp.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: regexp.test,v 1.30 2007/12/23 21:29:42 hobbs Exp $ +# RCS: @(#) $Id: regexp.test,v 1.30.2.1 2008/08/21 23:19:06 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -44,6 +44,31 @@ test regexp-1.7 {regexp utf compliance} { list [string compare $foo $bar] [regexp 4 $bar] } {0 0} +test regexp-1.8 {regexp ***= metasyntax} { + regexp -- "***=o" "aeiou" +} 1 +test regexp-1.9 {regexp ***= metasyntax} { + set string "aeiou" + regexp -- "***=o" $string +} 1 +test regexp-1.10 {regexp ***= metasyntax} { + set string "aeiou" + set re "***=o" + regexp -- $re $string +} 1 +test regexp-1.11 {regexp ***= metasyntax} { + regexp -- "***=y" "aeiou" +} 0 +test regexp-1.12 {regexp ***= metasyntax} { + set string "aeiou" + regexp -- "***=y" $string +} 0 +test regexp-1.13 {regexp ***= metasyntax} { + set string "aeiou" + set re "***=y" + regexp -- $re $string +} 0 + test regexp-2.1 {getting substrings back from regexp} { set foo {} list [regexp ab*c abbbbc foo] $foo diff --git a/tests/regexpComp.test b/tests/regexpComp.test index c7a5980..f38062d 100644 --- a/tests/regexpComp.test +++ b/tests/regexpComp.test @@ -43,7 +43,7 @@ test regexpComp-1.2 {basic regexp operation} { } } 1 test regexpComp-1.3 {basic regexp operation} { - evalInProc { + evalInProc { regexp ab*c ab } } 0 @@ -69,6 +69,43 @@ test regexpComp-1.7 {regexp utf compliance} { } } {0 0} +test regexp-1.8 {regexp ***= metasyntax} { + evalInProc { + regexp -- "***=o" "aeiou" + } +} 1 +test regexp-1.9 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + regexp -- "***=o" $string + } +} 1 +test regexp-1.10 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + set re "***=o" + regexp -- $re $string + } +} 1 +test regexp-1.11 {regexp ***= metasyntax} { + evalInProc { + regexp -- "***=y" "aeiou" + } +} 0 +test regexp-1.12 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + regexp -- "***=y" $string + } +} 0 +test regexp-1.13 {regexp ***= metasyntax} { + evalInProc { + set string "aeiou" + set re "***=y" + regexp -- $re $string + } +} 0 + test regexpComp-2.1 {getting substrings back from regexp} { evalInProc { set foo {} -- cgit v0.12