mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
register_fstring: avoid duping the passed string when possible
If the passed string is frozen, bare and not shared, then there
is no need to duplicate it.
Ref: 4ab69ebbd7
Ref: https://bugs.ruby-lang.org/issues/11386
This commit is contained in:
parent
7f0ea20581
commit
aaf0e33c0a
Notes:
git
2020-08-20 00:09:32 +09:00
2 changed files with 18 additions and 1 deletions
3
string.c
3
string.c
|
@ -305,7 +305,8 @@ fstr_update_callback(st_data_t *key, st_data_t *value, st_data_t arg, int existi
|
|||
OBJ_FREEZE_RAW(str);
|
||||
}
|
||||
else {
|
||||
str = str_new_frozen(rb_cString, str);
|
||||
if (!OBJ_FROZEN(str))
|
||||
str = str_new_frozen(rb_cString, str);
|
||||
if (STR_SHARED_P(str)) { /* str should not be shared */
|
||||
/* shared substring */
|
||||
str_make_independent(str);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue