diff --git a/qse/lib/cmn/tre-parse.c b/qse/lib/cmn/tre-parse.c index 9203d701..0d15d099 100644 --- a/qse/lib/cmn/tre-parse.c +++ b/qse/lib/cmn/tre-parse.c @@ -278,6 +278,15 @@ tre_parse_bracket_items(tre_parse_ctx_t *ctx, int negate, if (min > max) status = REG_ERANGE; } + /* QSE: handle \ as an escaper */ + else if (re + 1 < ctx->re_end && *re == CHAR_BACKSLASH) + { + /* escaped character inside [] */ + min = max = *(re + 1); + re += 2; + } + /* END QSE */ + else if (re + 1 < ctx->re_end && *re == CHAR_LBRACKET && *(re + 1) == CHAR_PERIOD) status = REG_ECOLLATE;