diff options
| author | Luke Gruber <luke.gruber@shopify.com> | 2025-11-12 12:51:47 -0500 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu.nakada@gmail.com> | 2025-11-18 00:53:47 +0900 |
| commit | 371a295e190f5b1191400a6ed6944e85ed035598 (patch) | |
| tree | a75253ad34ed7fd07f8edc82dd40aa7dc86824ea /string.c | |
| parent | 9de66a8c5150266d9f827a11300cd8bcd4b64d4f (diff) | |
Fix improper termlen fill in `str_duplicate_setup_embed`.
When term len != 1 (for example: Encoding::UTF32BE), term fill is wrong size.
Diffstat (limited to 'string.c')
| -rw-r--r-- | string.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1935,8 +1935,8 @@ str_duplicate_setup_embed(VALUE klass, VALUE str, VALUE dup) long len = RSTRING_LEN(str); RUBY_ASSERT(STR_EMBED_P(dup)); - RUBY_ASSERT(str_embed_capa(dup) >= len + 1); - MEMCPY(RSTRING(dup)->as.embed.ary, RSTRING(str)->as.embed.ary, char, len + 1); + RUBY_ASSERT(str_embed_capa(dup) >= len + TERM_LEN(str)); + MEMCPY(RSTRING(dup)->as.embed.ary, RSTRING(str)->as.embed.ary, char, len + TERM_LEN(str)); STR_SET_LEN(dup, RSTRING_LEN(str)); return str_duplicate_setup_encoding(str, dup, flags); } |
