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

ruby-changes:22674

From: nobu <ko1@a...>
Date: Tue, 21 Feb 2012 20:24:07 +0900 (JST)
Subject: [ruby-changes:22674] nobu:r34723 (trunk): * hash.c (rb_any_hash): treat Qundef like as other special constants.

nobu	2012-02-21 20:23:50 +0900 (Tue, 21 Feb 2012)

  New Revision: 34723

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

  Log:
    * hash.c (rb_any_hash): treat Qundef like as other special constants.

  Modified files:
    trunk/ChangeLog
    trunk/hash.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 34722)
+++ ChangeLog	(revision 34723)
@@ -1,5 +1,7 @@
-Tue Feb 21 20:22:43 2012  Nobuyoshi Nakada  <nobu@r...>
+Tue Feb 21 20:23:47 2012  Nobuyoshi Nakada  <nobu@r...>
 
+	* hash.c (rb_any_hash): treat Qundef like as other special constants.
+
 	* hash.c (hash_foreach_iter): fix signature.
 
 Tue Feb 21 19:39:34 2012  Tanaka Akira  <akr@f...>
Index: hash.c
===================================================================
--- hash.c	(revision 34722)
+++ hash.c	(revision 34723)
@@ -80,20 +80,14 @@
     VALUE hval;
     st_index_t hnum;
 
-    switch (TYPE(a)) {
-      case T_FIXNUM:
-      case T_SYMBOL:
-      case T_NIL:
-      case T_FALSE:
-      case T_TRUE:
-	hnum = rb_hash_end(rb_hash_start((unsigned int)a));
-	break;
-
-      case T_STRING:
+    if (SPECIAL_CONST_P(a)) {
+	if (a == Qundef) return 0;
+	hnum = rb_hash_end(rb_hash_start((st_index_t)a));
+    }
+    else if (BUILTIN_TYPE(a) == T_STRING) {
 	hnum = rb_str_hash(a);
-	break;
-
-      default:
+    }
+    else {
         hval = rb_hash(a);
 	hnum = FIX2LONG(hval);
     }

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

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