From: Rich Felker Date: Fri, 13 Apr 2012 23:50:58 +0000 (-0400) Subject: remove invalid code from TRE X-Git-Tag: v0.8.8~31 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=386b34a07bc65b6b0627d04105f60fb5fa79df33;p=oweals%2Fmusl.git 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. --- 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);