diff options
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -10774,9 +10774,12 @@ rb_sym2id(VALUE x) if (STATIC_SYM_P(x)) { return RSHIFT((unsigned long)(x),RUBY_SPECIAL_SHIFT); } - else { + else if (!SPECIAL_CONST_P(x) && BUILTIN_TYPE(x) == T_SYMBOL) { return rb_pin_dynamic_symbol(x); } + else { + return 0; + } } ID @@ -10785,9 +10788,12 @@ rb_sym2id_without_pindown(VALUE x) if (STATIC_SYM_P(x)) { return RSHIFT((unsigned long)(x),RUBY_SPECIAL_SHIFT); } - else { + else if (!SPECIAL_CONST_P(x) && BUILTIN_TYPE(x) == T_SYMBOL) { return (ID)x; } + else { + return 0; + } } VALUE |