[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]