diff options
author | Steve Bennett <steveb@workware.net.au> | 2011-06-09 11:44:03 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2011-06-09 11:45:39 +1000 |
commit | c8abfa88a3319425921064d045679614a1b4a550 (patch) | |
tree | 1881cc00dbdb5fa96342cabb5ccae21c1ccaec1a /jimregexp.c | |
parent | e46cf22807c6975b754e1c04c55049cce3ef6404 (diff) | |
download | jimtcl-c8abfa88a3319425921064d045679614a1b4a550.zip jimtcl-c8abfa88a3319425921064d045679614a1b4a550.tar.gz jimtcl-c8abfa88a3319425921064d045679614a1b4a550.tar.bz2 |
Revert regexp nested repeats from b34ab2f895
Nested repeats can't really be handled properly, so remove
support since it breaks some non-nested cases.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jimregexp.c')
-rw-r--r-- | jimregexp.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/jimregexp.c b/jimregexp.c index f67031b..8da9347 100644 --- a/jimregexp.c +++ b/jimregexp.c @@ -455,6 +455,11 @@ static int *regpiece(regex_t *preg, int *flagp) return(ret); } + if (!(flags&HASWIDTH) && op != '?') { + preg->err = REG_ERR_OPERAND_COULD_BE_EMPTY; + return NULL; + } + /* Handle braces (counted repetition) by expansion */ if (op == '{') { char *end; @@ -1290,11 +1295,7 @@ static int regmatchrepeat(regex_t *preg, int *scan, int matchmin) int max = scan[2]; int min = scan[3]; - if (preg->reginput == preg->prev) { - /* If we haven't moved, no match */ - return 0; - } - preg->prev = save = preg->reginput; + save = preg->reginput; /* Have we reached min? */ if (scan[4] < min) { |