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 ea6e6a6..712ca80 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)