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

ruby-changes:9267

From: nobu <ko1@a...>
Date: Wed, 17 Dec 2008 11:01:56 +0900 (JST)
Subject: [ruby-changes:9267] Ruby:r20804 (trunk): * string.c (rb_str_hash): gets rid of collisions between different

nobu	2008-12-17 11:01:37 +0900 (Wed, 17 Dec 2008)

  New Revision: 20804

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

  Log:
    * string.c (rb_str_hash): gets rid of collisions between different
      encoding strings.  [ruby-core:20526]

  Modified files:
    trunk/ChangeLog
    trunk/string.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 20803)
+++ ChangeLog	(revision 20804)
@@ -1,3 +1,8 @@
+Wed Dec 17 11:01:35 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_str_hash): gets rid of collisions between differen
+	  encoding strings.  [ruby-core:20526]
+
 Wed Dec 17 09:50:19 2008  Yuki Sonoda (Yugui)  <yugui@y...>
 
 	* test/ruby/test_metaclass.rb: removed codes for my debugging.
Index: string.c
===================================================================
--- string.c	(revision 20803)
+++ string.c	(revision 20804)
@@ -2014,7 +2014,11 @@
 int
 rb_str_hash(VALUE str)
 {
-    return rb_memhash((const void *)RSTRING_PTR(str), RSTRING_LEN(str));
+    int e = ENCODING_GET(str);
+    if (e) {
+	if (rb_enc_str_asciionly_p(str)) e = 0;
+    }
+    return rb_memhash((const void *)RSTRING_PTR(str), RSTRING_LEN(str)) ^ e;
 }
 
 int

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

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