diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-30 11:59:43 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-30 11:59:43 +0000 |
commit | 9234318e2543d28adcfd265cb86dc31429282df3 (patch) | |
tree | 418081152082ea88d9b0ac0f43bab58a43d6e74f /string.c | |
parent | e84f80761840000dd84ecd30d97946832e44dd97 (diff) |
merge revision(s) 65956:
fix r65954; Keep tainty
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@66105 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -8368,7 +8368,7 @@ rb_str_enumerate_grapheme_clusters(VALUE str, VALUE ary) VALUE orig = str; regex_t *reg_grapheme_cluster = NULL; rb_encoding *enc = rb_enc_from_index(ENCODING_GET(str)); - const char *ptr, *end; + const char *ptr0, *ptr, *end; if (!rb_enc_unicode_p(enc)) { return rb_str_enumerate_chars(str, ary); @@ -8376,7 +8376,7 @@ rb_str_enumerate_grapheme_clusters(VALUE str, VALUE ary) if (!ary) str = rb_str_new_frozen(str); reg_grapheme_cluster = get_reg_grapheme_cluster(enc); - ptr = RSTRING_PTR(str); + ptr0 = ptr = RSTRING_PTR(str); end = RSTRING_END(str); while (ptr < end) { @@ -8384,7 +8384,7 @@ rb_str_enumerate_grapheme_clusters(VALUE str, VALUE ary) (const OnigUChar *)ptr, (const OnigUChar *)end, (const OnigUChar *)ptr, NULL, 0); if (len <= 0) break; - ENUM_ELEM(ary, rb_enc_str_new(ptr, len, enc)); + ENUM_ELEM(ary, rb_str_subseq(str, ptr-ptr0, len)); ptr += len; } RB_GC_GUARD(str); |