ruby-changes:20636
From: nobu <ko1@a...>
Date: Wed, 27 Jul 2011 01:05:39 +0900 (JST)
Subject: [ruby-changes:20636] nobu:r32684 (trunk): * parse.y (rb_check_id): make the given name a symbol or a string.
nobu 2011-07-27 01:05:27 +0900 (Wed, 27 Jul 2011) New Revision: 32684 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32684 Log: * parse.y (rb_check_id): make the given name a symbol or a string. based on the second patch by Jeremy Evans at [ruby-core:38447] Modified files: trunk/ChangeLog trunk/include/ruby/ruby.h trunk/object.c trunk/parse.y trunk/proc.c trunk/variable.c trunk/vm_method.c Index: include/ruby/ruby.h =================================================================== --- include/ruby/ruby.h (revision 32683) +++ include/ruby/ruby.h (revision 32684) @@ -1098,7 +1098,7 @@ ID rb_intern2(const char*, long); ID rb_intern_str(VALUE str); const char *rb_id2name(ID); -ID rb_check_id(VALUE); +ID rb_check_id(volatile VALUE *); ID rb_to_id(VALUE); VALUE rb_id2str(ID); Index: ChangeLog =================================================================== --- ChangeLog (revision 32683) +++ ChangeLog (revision 32684) @@ -1,3 +1,8 @@ +Wed Jul 27 01:05:23 2011 Nobuyoshi Nakada <nobu@r...> + + * parse.y (rb_check_id): make the given name a symbol or a string. + based on the second patch by Jeremy Evans at [ruby-core:38447] + Wed Jul 27 00:50:00 2011 Kenta Murata <mrkn@m...> * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d): Index: variable.c =================================================================== --- variable.c (revision 32683) +++ variable.c (revision 32684) @@ -1299,7 +1299,7 @@ rb_obj_remove_instance_variable(VALUE obj, VALUE name) { VALUE val = Qnil; - const ID id = rb_check_id(name); + const ID id = rb_check_id(&name); st_data_t n, v; struct st_table *iv_index_tbl; st_data_t index; @@ -1685,7 +1685,7 @@ VALUE rb_mod_remove_const(VALUE mod, VALUE name) { - const ID id = rb_check_id(name); + const ID id = rb_check_id(&name); if (!id) { if (rb_is_const_name(name)) { @@ -2206,7 +2206,7 @@ VALUE rb_mod_remove_cvar(VALUE mod, VALUE name) { - const ID id = rb_check_id(name); + const ID id = rb_check_id(&name); st_data_t val, n = id; if (!id) { Index: object.c =================================================================== --- object.c (revision 32683) +++ object.c (revision 32684) @@ -1833,7 +1833,7 @@ else { rb_scan_args(argc, argv, "11", &name, &recur); } - if (!(id = rb_check_id(name))) { + if (!(id = rb_check_id(&name))) { if (rb_is_const_name(name)) { return Qfalse; } @@ -1870,7 +1870,7 @@ static VALUE rb_obj_ivar_get(VALUE obj, VALUE iv) { - ID id = rb_check_id(iv); + ID id = rb_check_id(&iv); if (!id) { if (rb_is_instance_name(iv)) { @@ -1938,7 +1938,7 @@ static VALUE rb_obj_ivar_defined(VALUE obj, VALUE iv) { - ID id = rb_check_id(iv); + ID id = rb_check_id(&iv); if (!id) { if (rb_is_instance_name(iv)) { @@ -1971,7 +1971,7 @@ static VALUE rb_mod_cvar_get(VALUE obj, VALUE iv) { - ID id = rb_check_id(iv); + ID id = rb_check_id(&iv); if (!id) { if (rb_is_class_name(iv)) { @@ -2034,7 +2034,7 @@ static VALUE rb_mod_cvar_defined(VALUE obj, VALUE iv) { - ID id = rb_check_id(iv); + ID id = rb_check_id(&iv); if (!id) { if (rb_is_class_name(iv)) { Index: proc.c =================================================================== --- proc.c (revision 32683) +++ proc.c (revision 32684) @@ -1198,7 +1198,7 @@ VALUE rb_obj_method(VALUE obj, VALUE vid) { - ID id = rb_check_id(vid); + ID id = rb_check_id(&vid); if (!id) { rb_method_name_error(CLASS_OF(obj), vid); } @@ -1215,7 +1215,7 @@ VALUE rb_obj_public_method(VALUE obj, VALUE vid) { - ID id = rb_check_id(vid); + ID id = rb_check_id(&vid); if (!id) { rb_method_name_error(CLASS_OF(obj), vid); } @@ -1256,7 +1256,7 @@ static VALUE rb_mod_instance_method(VALUE mod, VALUE vid) { - ID id = rb_check_id(vid); + ID id = rb_check_id(&vid); if (!id) { rb_method_name_error(mod, vid); } @@ -1273,7 +1273,7 @@ static VALUE rb_mod_public_instance_method(VALUE mod, VALUE vid) { - ID id = rb_check_id(vid); + ID id = rb_check_id(&vid); if (!id) { rb_method_name_error(mod, vid); } Index: vm_method.c =================================================================== --- vm_method.c (revision 32683) +++ vm_method.c (revision 32684) @@ -727,7 +727,7 @@ static VALUE rb_mod_method_defined(VALUE mod, VALUE mid) { - ID id = rb_check_id(mid); + ID id = rb_check_id(&mid); if (!id || !rb_method_boundp(mod, id, 1)) { return Qfalse; } @@ -778,7 +778,7 @@ static VALUE rb_mod_public_method_defined(VALUE mod, VALUE mid) { - ID id = rb_check_id(mid); + ID id = rb_check_id(&mid); if (!id) return Qfalse; return check_definition(mod, id, NOEX_PUBLIC); } @@ -812,7 +812,7 @@ static VALUE rb_mod_private_method_defined(VALUE mod, VALUE mid) { - ID id = rb_check_id(mid); + ID id = rb_check_id(&mid); if (!id) return Qfalse; return check_definition(mod, id, NOEX_PRIVATE); } @@ -846,7 +846,7 @@ static VALUE rb_mod_protected_method_defined(VALUE mod, VALUE mid) { - ID id = rb_check_id(mid); + ID id = rb_check_id(&mid); if (!id) return Qfalse; return check_definition(mod, id, NOEX_PROTECTED); } @@ -1259,7 +1259,7 @@ ID id; rb_scan_args(argc, argv, "11", &mid, &priv); - if (!(id = rb_check_id(mid))) + if (!(id = rb_check_id(&mid))) return Qfalse; if (basic_obj_respond_to(obj, id, !RTEST(priv))) return Qtrue; Index: parse.y =================================================================== --- parse.y (revision 32683) +++ parse.y (revision 32684) @@ -10105,10 +10105,11 @@ } ID -rb_check_id(VALUE name) +rb_check_id(volatile VALUE *namep) { st_data_t id; VALUE tmp; + VALUE name = *namep; if (SYMBOL_P(name)) { return SYM2ID(name); @@ -10121,6 +10122,7 @@ RSTRING_PTR(tmp)); } name = tmp; + *namep = name; } if (rb_enc_str_coderange(name) == ENC_CODERANGE_BROKEN) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/