summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-07-07 06:44:46 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-07-07 06:44:46 +0000
commitcfa0035962f7c373ca612be5bee749803368fd5b (patch)
tree3b040a18394f2e81079d356f76c5a136b6986fcd /parse.y
parentf4ca906d5c3267c0f84db4c5780829783c71a8b6 (diff)
* encoding.c (rb_enc_set_index, rb_enc_associate_index): should
check if frozen. * parse.y (rb_intern3), ruby.c (process_options, ruby_script): defer freezing after associating encodings. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y3
1 files changed, 2 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 015ad51531..9769bb9887 100644
--- a/parse.y
+++ b/parse.y
@@ -9723,13 +9723,14 @@ rb_intern3(const char *name, long len, rb_encoding *enc)
int mb;
st_data_t data;
struct RString fake_str;
- fake_str.basic.flags = T_STRING|RSTRING_NOEMBED|FL_FREEZE;
+ fake_str.basic.flags = T_STRING|RSTRING_NOEMBED;
fake_str.basic.klass = rb_cString;
fake_str.as.heap.len = len;
fake_str.as.heap.ptr = (char *)name;
fake_str.as.heap.aux.capa = len;
str = (VALUE)&fake_str;
rb_enc_associate(str, enc);
+ OBJ_FREEZE(str);
if (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN) {
rb_raise(rb_eEncodingError, "invalid encoding symbol");