diff --git a/string.c b/string.c index 56db697e3c8ec3..cef4bdab7b6d30 100644 --- a/string.c +++ b/string.c @@ -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); diff --git a/version.h b/version.h index cc5f50a49b997b..32006b6faad1b7 100644 --- a/version.h +++ b/version.h @@ -1,10 +1,10 @@ #define RUBY_VERSION "2.5.4" -#define RUBY_RELEASE_DATE "2018-11-28" -#define RUBY_PATCHLEVEL 114 +#define RUBY_RELEASE_DATE "2018-11-30" +#define RUBY_PATCHLEVEL 115 #define RUBY_RELEASE_YEAR 2018 #define RUBY_RELEASE_MONTH 11 -#define RUBY_RELEASE_DAY 28 +#define RUBY_RELEASE_DAY 30 #include "ruby/version.h"