another BRE fix: in ^*, * is literal
authorRich Felker <dalias@aerifal.cx>
Sun, 13 May 2012 21:16:10 +0000 (17:16 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 13 May 2012 21:16:10 +0000 (17:16 -0400)
i don't understand why this has to be conditional on being in BRE
mode, but enabling this code unconditionally breaks a huge number of
ERE test cases.

src/regex/regcomp.c

index ea6e6a6942ab7a7d9af5871153b1f8003233cfe6..712ca80db976ed6c9332d205e623d8c6ac68b6a6 100644 (file)
@@ -1353,6 +1353,8 @@ tre_parse(tre_parse_ctx_t *ctx)
              if (ctx->cflags & REG_EXTENDED
                  || ctx->re == ctx->re_start)
                {
+                 if (!(ctx->cflags & REG_EXTENDED))
+                   STACK_PUSHX(stack, int, PARSE_CATENATION);
                  result = tre_ast_new_literal(ctx->mem, ASSERTION,
                                               ASSERT_AT_BOL, -1);
                  if (result == NULL)