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

ruby-changes:12696

From: knu <ko1@a...>
Date: Thu, 6 Aug 2009 00:15:20 +0900 (JST)
Subject: [ruby-changes:12696] Ruby:r24411 (trunk): * lib/ipaddr.rb (IPAddr#hash): Take account of netmask; submitted

knu	2009-08-06 00:13:07 +0900 (Thu, 06 Aug 2009)

  New Revision: 24411

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

  Log:
    * lib/ipaddr.rb (IPAddr#hash): Take account of netmask; submitted
      by Nobuhiro IMAI in [ruby-dev:39011]

  Modified files:
    trunk/ChangeLog
    trunk/lib/ipaddr.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24410)
+++ ChangeLog	(revision 24411)
@@ -1,3 +1,8 @@
+Thu Aug  6 00:09:56 2009  Akinori MUSHA  <knu@i...>
+
+	* lib/ipaddr.rb (IPAddr#hash): Take account of netmask; submitted
+	  by Nobuhiro IMAI in [ruby-dev:39011]
+
 Wed Aug  5 19:19:13 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* ruby.c (load_file_internal): assumes -x flag if no "ruby" is in
Index: lib/ipaddr.rb
===================================================================
--- lib/ipaddr.rb	(revision 24410)
+++ lib/ipaddr.rb	(revision 24411)
@@ -338,7 +338,7 @@
 
   # Returns a hash value used by Hash, Set, and Array classes
   def hash
-    return (@addr.hash << 1) | (ipv4? ? 0 : 1)
+    return ([@addr, @mask_addr].hash << 1) | (ipv4? ? 0 : 1)
   end
 
   # Creates a Range object for the network address.
@@ -827,17 +827,19 @@
     a4 = IPAddr.new('3ffe:505:2::1')
     a5 = IPAddr.new('127.0.0.1')
     a6 = IPAddr.new('::1')
+    a7 = IPAddr.new('192.168.2.0/25')
+    a8 = IPAddr.new('192.168.2.0/25')
 
-    h = { a1 => 'ipv4', a2 => 'ipv4', a3 => 'ipv6', a4 => 'ipv6', a5 => 'ipv4', a6 => 'ipv6' }
-    assert_equal(4, h.size)
+    h = { a1 => 'ipv4', a2 => 'ipv4', a3 => 'ipv6', a4 => 'ipv6', a5 => 'ipv4', a6 => 'ipv6', a7 => 'ipv4', a8 => 'ipv4'}
+    assert_equal(5, h.size)
     assert_equal('ipv4', h[a1])
     assert_equal('ipv4', h[a2])
     assert_equal('ipv6', h[a3])
     assert_equal('ipv6', h[a4])
 
     require 'set'
-    s = Set[a1, a2, a3, a4, a5, a6]
-    assert_equal(4, s.size)
+    s = Set[a1, a2, a3, a4, a5, a6, a7, a8]
+    assert_equal(5, s.size)
     assert_equal(true, s.include?(a1))
     assert_equal(true, s.include?(a2))
     assert_equal(true, s.include?(a3))

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

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