parse.y: change Symbol <-> ID relationship to avoid exposing IDs from collectable symbols. [Bug #10014] Now, rb_check_id() returns 0 if corresponding symbol is pinned dynamic symbol. There is remaining intern_cstr_without_pindown(), it can return IDs from collectable symbols. We must be careful to use it (only used in parse.y). I think it should be removed if it does not have impact for performance.
parse.y: add:
STATIC_SYM2ID()
STATIC_ID2SYM() rename:
rb_pin_dynamic_symbol() -> dsymbol_pindown()
internal.h: remove:
rb_check_id_without_pindown()
rb_sym2id_without_pindown() add:
rb_check_symbol()
rb_check_symbol_cstr()
load.c: use rb_check_id() or rb_check_id_cstr().
object.c: ditto.
struct.c: ditto.
thread.c: ditto.
vm_method.c: ditto.
string.c (sym_find): use only rb_check_symbol().
sprintf.c (rb_str_format): use rb_check_symbol_cstr().
exposing IDs from collectable symbols.
[Bug #10014]
Now, rb_check_id() returns 0 if corresponding symbol is
pinned dynamic symbol.
There is remaining intern_cstr_without_pindown(), it can return
IDs from collectable symbols. We must be careful to use it
(only used in parse.y). I think it should be removed if
it does not have impact for performance.
add:
rename:
remove:
add:
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e