diff options
author | ericm <ericm> | 2000-09-20 01:50:37 (GMT) |
---|---|---|
committer | ericm <ericm> | 2000-09-20 01:50:37 (GMT) |
commit | ac36b4dd74f9359f07bfdb431c932d702064652f (patch) | |
tree | 898c1d7c089fbde4ddba5e1439c89644c8372642 | |
parent | 05b7a3b55f38610b766db4b48323334452f42fbe (diff) | |
download | tcl-ac36b4dd74f9359f07bfdb431c932d702064652f.zip tcl-ac36b4dd74f9359f07bfdb431c932d702064652f.tar.gz tcl-ac36b4dd74f9359f07bfdb431c932d702064652f.tar.bz2 |
* generic/tclCmdMZ.c (Tcl_RegexpObjCmd): When using -all, all
attempts after the first to match the regexp against the string
should include the TCL_REG_NOTBOL flag, to avoid erroneously
matching ^ in the middle of the string. Added code to set this
flag after the first pass through the matching loop. [Bug: 6284].
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | generic/tclCmdMZ.c | 3 | ||||
-rw-r--r-- | tests/regexp.test | 6 |
3 files changed, 15 insertions, 2 deletions
@@ -1,3 +1,11 @@ +2000-09-19 Eric Melski <ericm@ajubasolutions.com> + + * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): When using -all, all + attempts after the first to match the regexp against the string + should include the TCL_REG_NOTBOL flag, to avoid erroneously + matching ^ in the middle of the string. Added code to set this + flag after the first pass through the matching loop. [Bug: 6284]. + 2000-09-19 David Gravereaux <davygrvy@ajubasolutions.com> * doc/Eval.3: Added a note about the script argument to Tcl_Eval() diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 9fa3166..1e99419 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdMZ.c,v 1.29 2000/09/06 18:31:36 hobbs Exp $ + * RCS: @(#) $Id: tclCmdMZ.c,v 1.30 2000/09/20 01:50:38 ericm Exp $ */ #include "tclInt.h" @@ -433,6 +433,7 @@ Tcl_RegexpObjCmd(dummy, interp, objc, objv) } offset += info.matches[0].end; all++; + eflags |= TCL_REG_NOTBOL; if (offset >= stringLength) { break; } diff --git a/tests/regexp.test b/tests/regexp.test index e891b54..63dbd31 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.13 2000/04/10 21:08:27 ericm Exp $ +# RCS: @(#) $Id: regexp.test,v 1.14 2000/09/20 01:50:39 ericm Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -526,6 +526,10 @@ test regexp-18.10 {regexp -all} { # Go to index 3; this is past the end of the string, so stop. regexp -all -inline {a*} aba } {a {} a} +test regexp-18.11 {regexp -all} { + regexp -all -inline {^a} aaaa +} {a} + # cleanup ::tcltest::cleanupTests |