1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Set correct termlen for frozen strings

Frozen strings should have the same termlen as the original string when
copy_encoding is true.
This commit is contained in:
Peter Zhu 2022-01-06 13:35:17 -05:00
parent 44368b5f8b
commit 5f55b03716
Notes: git 2022-01-07 04:33:59 +09:00

View file

@ -1419,9 +1419,10 @@ str_new_frozen_buffer(VALUE klass, VALUE orig, int copy_encoding)
VALUE str;
long len = RSTRING_LEN(orig);
int termlen = copy_encoding ? TERM_LEN(orig) : 1;
if (STR_EMBED_P(orig) || STR_EMBEDDABLE_P(len, 1)) {
str = str_new(klass, RSTRING_PTR(orig), len);
if (STR_EMBED_P(orig) || STR_EMBEDDABLE_P(len, termlen)) {
str = str_new0(klass, RSTRING_PTR(orig), len, termlen);
assert(STR_EMBED_P(str));
}
else {