aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-11-15 07:08:07 +1000
committerSteve Bennett <steveb@workware.net.au>2010-11-17 07:57:40 +1000
commitf068be5f6314710a508935474b4ac8c139bbbdaf (patch)
tree26bb910a5360115dc0b9e78138760d8237b3100e
parent07f782492c1bffa922115ebb92dfdb59662a6b4b (diff)
downloadjimtcl-f068be5f6314710a508935474b4ac8c139bbbdaf.zip
jimtcl-f068be5f6314710a508935474b4ac8c139bbbdaf.tar.gz
jimtcl-f068be5f6314710a508935474b4ac8c139bbbdaf.tar.bz2
Bug fix: [regexp] single braced count was rejected
The form {n} should be considered the same as {n,n} Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jimregexp.c15
-rw-r--r--tests/regexp2.test4
2 files changed, 14 insertions, 5 deletions
diff --git a/jimregexp.c b/jimregexp.c
index a6b8487..47bb0f8 100644
--- a/jimregexp.c
+++ b/jimregexp.c
@@ -490,11 +490,16 @@ static int *regpiece(regex_t *preg, int *flagp)
return NULL;
}
}
- preg->regparse = end;
- max = strtoul(preg->regparse + 1, &end, 10);
- if (*end != '}') {
- preg->err = REG_ERR_UNMATCHED_BRACES;
- return NULL;
+ if (*end == '}') {
+ max = min;
+ }
+ else {
+ preg->regparse = end;
+ max = strtoul(preg->regparse + 1, &end, 10);
+ if (*end != '}') {
+ preg->err = REG_ERR_UNMATCHED_BRACES;
+ return NULL;
+ }
}
if (end == preg->regparse + 1) {
max = -1;
diff --git a/tests/regexp2.test b/tests/regexp2.test
index a061e8b..2349a96 100644
--- a/tests/regexp2.test
+++ b/tests/regexp2.test
@@ -906,4 +906,8 @@ test regexp-25.1 {Repeat on escaped char} {
regexp {\x41\x42*} bc
} 0
+test regexp-25.2 {Single braced count} {
+ regexp "a{4}" baaaad
+} 1
+
testreport