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

ruby-changes:11726

From: nobu <ko1@a...>
Date: Sat, 9 May 2009 12:20:05 +0900 (JST)
Subject: [ruby-changes:11726] Ruby:r23372 (trunk): * hash.c: 3rd arguemnt of rb_hash_foreach() is VALUE.

nobu	2009-05-09 12:19:52 +0900 (Sat, 09 May 2009)

  New Revision: 23372

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23372

  Log:
    * hash.c: 3rd arguemnt of rb_hash_foreach() is VALUE.
    * hash.c (rb_any_hash, recursive_hash): use VALUE for hash.

  Modified files:
    trunk/ChangeLog
    trunk/hash.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23371)
+++ ChangeLog	(revision 23372)
@@ -1,3 +1,9 @@
+Sat May  9 12:19:49 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* hash.c: 3rd arguemnt of rb_hash_foreach() is VALUE.
+
+	* hash.c (rb_any_hash, recursive_hash): use VALUE for hash.
+
 Sat May  9 11:14:50 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* vm_eval.c (rb_f_catch): gets rid of issue with gcc 4.4.  a patch
Index: hash.c
===================================================================
--- hash.c	(revision 23371)
+++ hash.c	(revision 23372)
@@ -76,7 +76,7 @@
 rb_any_hash(VALUE a)
 {
     VALUE hval;
-    int hnum;
+    VALUE hnum;
 
     switch (TYPE(a)) {
       case T_FIXNUM:
@@ -93,10 +93,10 @@
 
       default:
         hval = rb_hash(a);
-	hnum = (int)FIX2LONG(hval);
+	hnum = FIX2LONG(hval);
     }
     hnum <<= 1;
-    return RSHIFT(hnum, 1);
+    return (int)RSHIFT(hnum, 1);
 }
 
 static const struct st_hash_type objhash = {
@@ -410,8 +410,10 @@
 }
 
 static int
-rb_hash_rehash_i(VALUE key, VALUE value, st_table *tbl)
+rb_hash_rehash_i(VALUE key, VALUE value, VALUE arg)
 {
+    st_table *tbl = (st_table *)arg;
+
     if (key != Qundef) st_insert(tbl, key, value);
     return ST_CONTINUE;
 }
@@ -448,7 +450,7 @@
     if (!RHASH(hash)->ntbl)
         return hash;
     tbl = st_init_table_with_size(RHASH(hash)->ntbl->type, RHASH(hash)->ntbl->num_entries);
-    rb_hash_foreach(hash, rb_hash_rehash_i, (st_data_t)tbl);
+    rb_hash_foreach(hash, rb_hash_rehash_i, (VALUE)tbl);
     st_free_table(RHASH(hash)->ntbl);
     RHASH(hash)->ntbl = tbl;
 
@@ -676,8 +678,10 @@
 }
 
 static int
-key_i(VALUE key, VALUE value, VALUE *args)
+key_i(VALUE key, VALUE value, VALUE arg)
 {
+    VALUE *args = (VALUE *)arg;
+
     if (rb_equal(value, args[0])) {
 	args[1] = key;
 	return ST_STOP;
@@ -705,7 +709,7 @@
     args[0] = value;
     args[1] = Qnil;
 
-    rb_hash_foreach(hash, key_i, (st_data_t)args);
+    rb_hash_foreach(hash, key_i, (VALUE)args);
 
     return args[1];
 }
@@ -774,8 +778,10 @@
 };
 
 static int
-shift_i(VALUE key, VALUE value, struct shift_var *var)
+shift_i(VALUE key, VALUE value, VALUE arg)
 {
+    struct shift_var *var = (struct shift_var *)arg;
+
     if (key == Qundef) return ST_CONTINUE;
     if (var->key != Qundef) return ST_STOP;
     var->key = key;
@@ -784,8 +790,10 @@
 }
 
 static int
-shift_i_safe(VALUE key, VALUE value, struct shift_var *var)
+shift_i_safe(VALUE key, VALUE value, VALUE arg)
 {
+    struct shift_var *var = (struct shift_var *)arg;
+
     if (key == Qundef) return ST_CONTINUE;
     var->key = key;
     var->val = value;
@@ -813,7 +821,7 @@
     rb_hash_modify(hash);
     var.key = Qundef;
     rb_hash_foreach(hash, RHASH(hash)->iter_lev > 0 ? shift_i_safe : shift_i,
-		    (st_data_t)&var);
+		    (VALUE)&var);
 
     if (var.key != Qundef) {
 	if (RHASH(hash)->iter_lev > 0) {
@@ -871,7 +879,7 @@
 VALUE
 rb_hash_reject_bang(VALUE hash)
 {
-    int n;
+    st_index_t n;
 
     RETURN_ENUMERATOR(hash, 0, 0);
     if (!RHASH(hash)->ntbl)
@@ -1378,8 +1386,10 @@
 }
 
 static int
-rb_hash_search_value(VALUE key, VALUE value, VALUE *data)
+rb_hash_search_value(VALUE key, VALUE value, VALUE arg)
 {
+    VALUE *data = (VALUE *)arg;
+
     if (key == Qundef) return ST_CONTINUE;
     if (rb_equal(value, data[1])) {
 	data[0] = Qtrue;
@@ -1408,7 +1418,7 @@
 
     data[0] = Qfalse;
     data[1] = val;
-    rb_hash_foreach(hash, rb_hash_search_value, (st_data_t)data);
+    rb_hash_foreach(hash, rb_hash_search_value, (VALUE)data);
     return data[0];
 }
 
@@ -1419,8 +1429,9 @@
 };
 
 static int
-eql_i(VALUE key, VALUE val1, struct equal_data *data)
+eql_i(VALUE key, VALUE val1, VALUE arg)
 {
+    struct equal_data *data = (struct equal_data *)arg;
     VALUE val2;
 
     if (key == Qundef) return ST_CONTINUE;
@@ -1428,7 +1439,7 @@
 	data->result = Qfalse;
 	return ST_STOP;
     }
-    if (!(data->eql ? rb_eql(val1, val2) : rb_equal(val1, val2))) {
+    if (!(data->eql ? rb_eql(val1, val2) : (int)rb_equal(val1, val2))) {
 	data->result = Qfalse;
 	return ST_STOP;
     }
@@ -1443,7 +1454,7 @@
     if (recur) return Qfalse;
     data = (struct equal_data*)dt;
     data->result = Qtrue;
-    rb_hash_foreach(hash, eql_i, (st_data_t)data);
+    rb_hash_foreach(hash, eql_i, dt);
 
     return data->result;
 }
@@ -1520,8 +1531,10 @@
 }
 
 static int
-hash_i(VALUE key, VALUE val, int *hval)
+hash_i(VALUE key, VALUE val, VALUE arg)
 {
+    VALUE *hval = (VALUE *)arg;
+
     if (key == Qundef) return ST_CONTINUE;
     *hval ^= rb_hash_end(rb_hash_uint(rb_hash_start(rb_hash(key)), rb_hash(val)));
     return ST_CONTINUE;
@@ -1530,7 +1543,7 @@
 static VALUE
 recursive_hash(VALUE hash, VALUE dummy, int recur)
 {
-    int hval;
+    VALUE hval;
 
     if (recur) {
 	return LONG2FIX(0);
@@ -1538,7 +1551,7 @@
     if (!RHASH(hash)->ntbl)
         return LONG2FIX(0);
     hval = RHASH(hash)->ntbl->num_entries;
-    rb_hash_foreach(hash, hash_i, (st_data_t)&hval);
+    rb_hash_foreach(hash, hash_i, (VALUE)&hval);
     return INT2FIX(hval);
 }
 
@@ -1663,8 +1676,10 @@
 }
 
 static int
-assoc_i(VALUE key, VALUE val, VALUE *args)
+assoc_i(VALUE key, VALUE val, VALUE arg)
 {
+    VALUE *args = (VALUE *)arg;
+
     if (key == Qundef) return ST_CONTINUE;
     if (RTEST(rb_equal(args[0], key))) {
 	args[1] = rb_assoc_new(key, val);
@@ -1694,13 +1709,15 @@
 
     args[0] = obj;
     args[1] = Qnil;
-    rb_hash_foreach(hash, assoc_i, (st_data_t)args);
+    rb_hash_foreach(hash, assoc_i, (VALUE)args);
     return args[1];
 }
 
 static int
-rassoc_i(VALUE key, VALUE val, VALUE *args)
+rassoc_i(VALUE key, VALUE val, VALUE arg)
 {
+    VALUE *args = (VALUE *)arg;
+
     if (key == Qundef) return ST_CONTINUE;
     if (RTEST(rb_equal(args[0], val))) {
 	args[1] = rb_assoc_new(key, val);
@@ -1729,7 +1746,7 @@
 
     args[0] = obj;
     args[1] = Qnil;
-    rb_hash_foreach(hash, rassoc_i, (st_data_t)args);
+    rb_hash_foreach(hash, rassoc_i, (VALUE)args);
     return args[1];
 }
 
@@ -1860,7 +1877,7 @@
     rb_secure(4);
     SafeStringValue(name);
     nam = RSTRING_PTR(name);
-    if (strlen(nam) != RSTRING_LEN(name)) {
+    if (memchr(nam, '\0', RSTRING_LEN(name))) {
 	rb_raise(rb_eArgError, "bad environment variable name");
     }
     val = getenv(nam);
@@ -1894,7 +1911,7 @@
     rb_secure(4);
     SafeStringValue(name);
     nam = RSTRING_PTR(name);
-    if (strlen(nam) != RSTRING_LEN(name)) {
+    if (memchr(nam, '\0', RSTRING_LEN(name))) {
 	rb_raise(rb_eArgError, "bad environment variable name");
     }
     env = getenv(nam);
@@ -1925,7 +1942,7 @@
     }
     SafeStringValue(key);
     nam = RSTRING_PTR(key);
-    if (strlen(nam) != RSTRING_LEN(key)) {
+    if (memchr(nam, '\0', RSTRING_LEN(key))) {
 	rb_raise(rb_eArgError, "bad environment variable name");
     }
     env = getenv(nam);
@@ -2065,9 +2082,9 @@
     StringValue(val);
     name = RSTRING_PTR(nm);
     value = RSTRING_PTR(val);
-    if (strlen(name) != RSTRING_LEN(nm))
+    if (memchr(name, '\0', RSTRING_LEN(nm)))
 	rb_raise(rb_eArgError, "bad environment variable name");
-    if (strlen(value) != RSTRING_LEN(val))
+    if (memchr(value, '\0', RSTRING_LEN(val)))
 	rb_raise(rb_eArgError, "bad environment variable value");
 
     ruby_setenv(name, value);
@@ -2367,7 +2384,7 @@
 
     rb_secure(4);
     s = StringValuePtr(key);
-    if (strlen(s) != RSTRING_LEN(key))
+    if (memchr(s, '\0', RSTRING_LEN(key)))
 	rb_raise(rb_eArgError, "bad environment variable name");
     if (getenv(s)) return Qtrue;
     return Qfalse;
@@ -2380,7 +2397,7 @@
 
     rb_secure(4);
     s = StringValuePtr(key);
-    if (strlen(s) != RSTRING_LEN(key))
+    if (memchr(s, '\0', RSTRING_LEN(key)))
 	rb_raise(rb_eArgError, "bad environment variable name");
     e = getenv(s);
     if (e) return rb_assoc_new(key, rb_tainted_str_new2(e));

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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