summaryrefslogtreecommitdiff
path: root/src/regex
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-04-13 19:50:58 -0400
committerRich Felker <dalias@aerifal.cx>2012-04-13 19:50:58 -0400
commit386b34a07bc65b6b0627d04105f60fb5fa79df33 (patch)
treedb6f140875f61e8e68655a757d8b4665b8ee7fcf /src/regex
parentb6dbdc69b6d969b416428e0eb467eefbe5a7837f (diff)
downloadmusl-386b34a07bc65b6b0627d04105f60fb5fa79df33.tar.gz
remove invalid code from TRE
TRE wants to treat + and ? after a +, ?, or * as special; ? means ungreedy and + is reserved for future use. however, this is non-conformant. although redundant, these redundant characters have well-defined (no-op) meaning for POSIX ERE, and are actually _literal_ characters (which TRE is wrongly ignoring) in POSIX BRE mode. the simplest fix is to simply remove the unneeded nonstandard functionality. as a plus, this shaves off a small amount of bloat.
Diffstat (limited to 'src/regex')
-rw-r--r--src/regex/regcomp.c14
1 files changed, 0 insertions, 14 deletions
diff --git a/src/regex/regcomp.c b/src/regex/regcomp.c
index 8987f5aa..f8ebe409 100644
--- a/src/regex/regcomp.c
+++ b/src/regex/regcomp.c
@@ -1105,20 +1105,6 @@ tre_parse(tre_parse_ctx_t *ctx)
if (*ctx->re == CHAR_QUESTIONMARK)
rep_max = 1;
- {
- if (*(ctx->re + 1) == CHAR_QUESTIONMARK)
- {
- minimal = 1;
- ctx->re++;
- }
- else if (*(ctx->re + 1) == CHAR_STAR
- || *(ctx->re + 1) == CHAR_PLUS)
- {
- /* These are reserved for future extensions. */
- return REG_BADRPT;
- }
- }
-
ctx->re++;
tmp_node = tre_ast_new_iter(ctx->mem, result, rep_min, rep_max,
minimal);