mirror of git://git.musl-libc.org/musl
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.
This commit is contained in:
parent
b6dbdc69b6
commit
386b34a07b
|
@ -1105,20 +1105,6 @@ tre_parse(tre_parse_ctx_t *ctx)
|
||||||
if (*ctx->re == CHAR_QUESTIONMARK)
|
if (*ctx->re == CHAR_QUESTIONMARK)
|
||||||
rep_max = 1;
|
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++;
|
ctx->re++;
|
||||||
tmp_node = tre_ast_new_iter(ctx->mem, result, rep_min, rep_max,
|
tmp_node = tre_ast_new_iter(ctx->mem, result, rep_min, rep_max,
|
||||||
minimal);
|
minimal);
|
||||||
|
|
Loading…
Reference in New Issue