Use rb_enc_interned_str in ibf_load_object_string
This commit is contained in:
parent
8463c8a425
commit
d00e7deb5c
Notes:
git
2021-03-11 06:44:29 +09:00
11
compile.c
11
compile.c
@ -11389,17 +11389,20 @@ ibf_load_object_string(const struct ibf_load *load, const struct ibf_object_head
|
|||||||
const long len = (long)ibf_load_small_value(load, &reading_pos);
|
const long len = (long)ibf_load_small_value(load, &reading_pos);
|
||||||
const char *ptr = load->current_buffer->buff + reading_pos;
|
const char *ptr = load->current_buffer->buff + reading_pos;
|
||||||
|
|
||||||
VALUE str = rb_str_new(ptr, len);
|
|
||||||
|
|
||||||
if (encindex > RUBY_ENCINDEX_BUILTIN_MAX) {
|
if (encindex > RUBY_ENCINDEX_BUILTIN_MAX) {
|
||||||
VALUE enc_name_str = ibf_load_object(load, encindex - RUBY_ENCINDEX_BUILTIN_MAX);
|
VALUE enc_name_str = ibf_load_object(load, encindex - RUBY_ENCINDEX_BUILTIN_MAX);
|
||||||
encindex = rb_enc_find_index(RSTRING_PTR(enc_name_str));
|
encindex = rb_enc_find_index(RSTRING_PTR(enc_name_str));
|
||||||
}
|
}
|
||||||
rb_enc_associate_index(str, encindex);
|
|
||||||
|
VALUE str;
|
||||||
|
if (header->frozen && !header->internal) {
|
||||||
|
str = rb_enc_interned_str(ptr, len, rb_enc_from_index(encindex));
|
||||||
|
} else {
|
||||||
|
str = rb_enc_str_new(ptr, len, rb_enc_from_index(encindex));
|
||||||
|
|
||||||
if (header->internal) rb_obj_hide(str);
|
if (header->internal) rb_obj_hide(str);
|
||||||
if (header->frozen) str = rb_fstring(str);
|
if (header->frozen) str = rb_fstring(str);
|
||||||
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user