Browse Source

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.
Rich Felker 13 years ago
parent
commit
386b34a07b
1 changed files with 0 additions and 14 deletions
  1. 0 14
      src/regex/regcomp.c

+ 0 - 14
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);