aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y16
1 files changed, 9 insertions, 7 deletions
diff --git a/parse.y b/parse.y
index 39cd51df9d..8ca7c86270 100644
--- a/parse.y
+++ b/parse.y
@@ -271,7 +271,7 @@ struct parser_params {
#define STR_NEW0() rb_enc_str_new(0,0,rb_usascii_encoding())
#define STR_NEW2(p) rb_enc_str_new((p),strlen(p),parser->enc)
#define STR_NEW3(p,n,e,func) parser_str_new((p),(n),(e),(func),parser->enc)
-#define STR_ENC(m) ((m)?parser->enc:rb_ascii8bit_encoding())
+#define STR_ENC(m) ((m)?parser->enc:rb_usascii_encoding())
#define ENC_SINGLE(cr) ((cr)==ENC_CODERANGE_7BIT)
#define TOK_INTERN(mb) rb_intern3(tok(), toklen(), STR_ENC(mb))
@@ -9043,7 +9043,7 @@ rb_intern3(const char *name, long len, rb_encoding *enc)
ID
rb_intern2(const char *name, long len)
{
- return rb_intern3(name, len, rb_ascii8bit_encoding());
+ return rb_intern3(name, len, rb_usascii_encoding());
}
#undef rb_intern
@@ -9056,14 +9056,16 @@ rb_intern(const char *name)
ID
rb_intern_str(VALUE str)
{
- int idx = 0;
+ rb_encoding *enc;
ID id;
- if (rb_enc_str_coderange(str) != ENC_CODERANGE_7BIT) {
- idx = rb_enc_get_index(str);
+ if (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT) {
+ enc = rb_usascii_encoding();
+ }
+ else {
+ enc = rb_enc_get(str);
}
- id = rb_intern3(RSTRING_PTR(str), RSTRING_LEN(str),
- rb_enc_from_index(idx));
+ id = rb_intern3(RSTRING_PTR(str), RSTRING_LEN(str), enc);
RB_GC_GUARD(str);
return id;
}