* parse.y (rb_str_dynamic_intern): associate proper encoding with
  the result symbol.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2014-03-26 11:30:54 +00:00
Родитель e8de850e6d
Коммит bb1d0d2807
2 изменённых файлов: 2 добавлений и 3 удалений

Просмотреть файл

@ -747,9 +747,6 @@ rb_enc_get_index(VALUE obj)
obj = rb_id2str(SYM2ID(obj)); obj = rb_id2str(SYM2ID(obj));
} }
switch (BUILTIN_TYPE(obj)) { switch (BUILTIN_TYPE(obj)) {
case T_SYMBOL:
obj = RSYMBOL(obj)->fstr;
/* fall through */
as_default: as_default:
default: default:
case T_STRING: case T_STRING:

Просмотреть файл

@ -10685,12 +10685,14 @@ rb_str_dynamic_intern(VALUE str)
str = rb_str_dup(str); str = rb_str_dup(str);
rb_enc_associate(str, ascii); rb_enc_associate(str, ascii);
OBJ_FREEZE(str); OBJ_FREEZE(str);
enc = ascii;
} }
} }
type = rb_str_symname_type(str, IDSET_ATTRSET_FOR_INTERN); type = rb_str_symname_type(str, IDSET_ATTRSET_FOR_INTERN);
str = rb_fstring(str); str = rb_fstring(str);
dsym = rb_newobj_of(rb_cSymbol, T_SYMBOL); dsym = rb_newobj_of(rb_cSymbol, T_SYMBOL);
rb_enc_associate(dsym, enc);
OBJ_FREEZE(dsym); OBJ_FREEZE(dsym);
RSYMBOL(dsym)->fstr = str; RSYMBOL(dsym)->fstr = str;
RSYMBOL(dsym)->type = type; RSYMBOL(dsym)->type = type;