diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2019-08-11 12:17:58 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2019-08-11 12:17:58 +0000 |
commit | ad6ffac7d6121c193b95c15bc011c9969967f554 (patch) | |
tree | 6ddd90a00ed0921a1201ca35767a1554c8eafe25 /regparse.c | |
parent | e68627da985d118be573cd9f7e30617cb2bd76fc (diff) |
merge revision(s) 8aecc90974ab1ac87056f77e2cb3406c5c041504,2f6cc15cdb3d64135b29cfd5ee376a5a03ebbee7: [Backport #15965]
Hoisted out WIDE_ENCODINGS
Fixed String#grapheme_clusters with wide encodings
* string.c (get_reg_grapheme_cluster): make regexp from properly
encoded sources fro wide-char encodings. [Bug #15965]
* regparse.c (node_extended_grapheme_cluster): suppress false
duplicated range warning for the time being.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'regparse.c')
-rw-r--r-- | regparse.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/regparse.c b/regparse.c index 5e51e39502..574a07e05d 100644 --- a/regparse.c +++ b/regparse.c @@ -5961,6 +5961,10 @@ node_extended_grapheme_cluster(Node** np, ScanEnv* env) if (ONIGENC_MBC_MINLEN(env->enc) > 1) { /* UTF-16/UTF-32 */ BBuf *inverted_buf = NULL; + /* TODO: fix false warning */ + const int dup_not_warned = env->warnings_flag | ~ONIG_SYN_WARN_CC_DUP; + env->warnings_flag |= ONIG_SYN_WARN_CC_DUP; + /* Start with a positive buffer and invert at the end. * Otherwise, adding single-character ranges work the wrong way. */ R_ERR(add_property_to_cc(cc, "Grapheme_Cluster_Break=Control", 0, env)); @@ -5968,6 +5972,8 @@ node_extended_grapheme_cluster(Node** np, ScanEnv* env) R_ERR(add_code_range(&(cc->mbuf), env, 0x000D, 0x000D)); /* LF */ R_ERR(not_code_range_buf(env->enc, cc->mbuf, &inverted_buf, env)); cc->mbuf = inverted_buf; /* TODO: check what to do with buffer before inversion */ + + env->warnings_flag &= dup_not_warned; /* TODO: fix false warning */ } else { R_ERR(add_property_to_cc(cc, "Grapheme_Cluster_Break=Control", 1, env)); |