diff options
author | dgp <dgp@users.sourceforge.net> | 2003-11-17 18:12:07 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2003-11-17 18:12:07 (GMT) |
commit | 4206e81fe55990ba0656ce78b413dfee73e5e5a7 (patch) | |
tree | e29fd69d2797dd44088bff0bc55f109b06ea7179 /generic/tclTest.c | |
parent | f38e38c5261267a0a9ae6fb3e4ea1df6c4075a6a (diff) | |
download | tcl-4206e81fe55990ba0656ce78b413dfee73e5e5a7.zip tcl-4206e81fe55990ba0656ce78b413dfee73e5e5a7.tar.gz tcl-4206e81fe55990ba0656ce78b413dfee73e5e5a7.tar.bz2 |
* generic/regcomp.c: Backported regexp bug fixes and tests. Thanks
* generic/tclTest.c: to Pavel Goran and Vince Darley.
* tests/reg.test: [Bugs 230589, 504785, 505048, 703709, 840258]
Diffstat (limited to 'generic/tclTest.c')
-rw-r--r-- | generic/tclTest.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/generic/tclTest.c b/generic/tclTest.c index 3a23941..835c602 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclTest.c,v 1.62.2.4 2003/10/31 13:33:40 vincentdarley Exp $ + * RCS: @(#) $Id: tclTest.c,v 1.62.2.5 2003/11/17 18:12:08 dgp Exp $ */ #define TCL_TEST @@ -3339,12 +3339,26 @@ TestregexpObjCmd(dummy, interp, objc, objv) char *varName; CONST char *value; int start, end; - char info[TCL_INTEGER_SPACE * 2]; + char resinfo[TCL_INTEGER_SPACE * 2]; varName = Tcl_GetString(objv[2]); TclRegExpRangeUniChar(regExpr, -1, &start, &end); - sprintf(info, "%d %d", start, end-1); - value = Tcl_SetVar(interp, varName, info, 0); + sprintf(resinfo, "%d %d", start, end-1); + value = Tcl_SetVar(interp, varName, resinfo, 0); + if (value == NULL) { + Tcl_AppendResult(interp, "couldn't set variable \"", + varName, "\"", (char *) NULL); + return TCL_ERROR; + } + } else if (cflags & TCL_REG_CANMATCH) { + char *varName; + CONST char *value; + char resinfo[TCL_INTEGER_SPACE * 2]; + + Tcl_RegExpGetInfo(regExpr, &info); + varName = Tcl_GetString(objv[2]); + sprintf(resinfo, "%d", info.extendStart); + value = Tcl_SetVar(interp, varName, resinfo, 0); if (value == NULL) { Tcl_AppendResult(interp, "couldn't set variable \"", varName, "\"", (char *) NULL); @@ -3463,6 +3477,10 @@ TestregexpXflags(string, length, cflagsPtr, eflagsPtr) cflags &= ~REG_ADVANCED; break; } + case 'c': { + cflags |= TCL_REG_CANMATCH; + break; + } case 'e': { cflags &= ~REG_ADVANCED; cflags |= REG_EXTENDED; |