diff options
author | K.Kosako <kkosako0@gmail.com> | 2024-06-05 22:43:24 +0900 |
---|---|---|
committer | K.Kosako <kkosako0@gmail.com> | 2024-06-05 22:43:24 +0900 |
commit | 2c747f537fbf2d44d5fab7f93c4b4ece9a4c883e (patch) | |
tree | fd5a88b648bc5f17905cf048d08601acaddc13ca /src/regparse.c | |
parent | 1b375923dd74367f3ebb58e2ee4dd95ccf7218fc (diff) | |
download | oniguruma-2c747f537fbf2d44d5fab7f93c4b4ece9a4c883e.zip oniguruma-2c747f537fbf2d44d5fab7f93c4b4ece9a4c883e.tar.gz oniguruma-2c747f537fbf2d44d5fab7f93c4b4ece9a4c883e.tar.bz2 |
add new behavior ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC (#298)
Diffstat (limited to 'src/regparse.c')
-rw-r--r-- | src/regparse.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/regparse.c b/src/regparse.c index 3f764cb..36b6dd1 100644 --- a/src/regparse.c +++ b/src/regparse.c @@ -7092,11 +7092,16 @@ prs_cc(Node** np, PToken* tok, UChar** src, UChar* end, ParseEnv* env) goto val_entry; } else if (r == TK_CC_AND) { + range_end_val_with_warning: CC_ESC_WARN(env, (UChar* )"-"); goto range_end_val; } if (curr_type == CV_CPROP) { + if (IS_SYNTAX_BV(env->syntax, + ONIG_SYN_ALLOW_CHAR_TYPE_FOLLOWED_BY_MINUS_IN_CC)) { + goto range_end_val_with_warning; + } r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; goto err; } @@ -7127,16 +7132,16 @@ prs_cc(Node** np, PToken* tok, UChar** src, UChar* end, ParseEnv* env) if (r < 0) goto err; fetched = 1; - if (r == TK_CC_CLOSE) + if (r == TK_CC_CLOSE) { goto range_end_val; /* allow [a-b-] */ + } else if (r == TK_CC_AND) { - CC_ESC_WARN(env, (UChar* )"-"); - goto range_end_val; + goto range_end_val_with_warning; } if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) { - CC_ESC_WARN(env, (UChar* )"-"); - goto range_end_val; /* [0-9-a] is allowed as [0-9\-a] */ + /* [0-9-a] is allowed as [0-9\-a] */ + goto range_end_val_with_warning; } r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; goto err; |