浏览代码

suppress backref processing in ERE regcomp

one of the features of ERE is that it's actually a regular language
and does not admit expressions which cannot be matched in linear time.
introduction of \n backref support into regcomp's ERE parsing was
unintentional.
Rich Felker 10 年之前
父节点
当前提交
7c8c86f630
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      src/regex/regcomp.c

+ 1 - 1
src/regex/regcomp.c

@@ -839,7 +839,7 @@ static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s)
 			s--;
 			s--;
 			break;
 			break;
 		default:
 		default:
-			if (isdigit(*s)) {
+			if (!ere && isdigit(*s)) {
 				/* back reference */
 				/* back reference */
 				int val = *s - '0';
 				int val = *s - '0';
 				node = tre_ast_new_literal(ctx->mem, BACKREF, val, ctx->position);
 				node = tre_ast_new_literal(ctx->mem, BACKREF, val, ctx->position);