Skip to content

Commit 77fe1fc

Browse files
espartaioquatix
authored andcommitted
Fix exception calling to_range' after freeze'
1 parent 6a72c70 commit 77fe1fc

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

lib/ipaddr.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ def to_range
411411
raise AddressFamilyError, "unsupported address family"
412412
end
413413

414-
return clone.set(begin_addr, @family)..clone.set(end_addr, @family)
414+
self.class.new(begin_addr, @family)..self.class.new(end_addr, @family)
415415
end
416416

417417
# Returns the prefix length in bits for the ipaddr.
@@ -583,6 +583,7 @@ def mask!(mask)
583583
# those, such as &, |, include? and ==, accept a string, or a packed
584584
# in_addr value instead of an IPAddr object.
585585
def initialize(addr = '::', family = Socket::AF_UNSPEC)
586+
@mask_addr = nil
586587
if !addr.kind_of?(String)
587588
case family
588589
when Socket::AF_INET, Socket::AF_INET6

test/test_ipaddr.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,28 @@ def test_zone_id
255255
assert_equal("1:2:3:4:5:6:7:8%ab0", a.to_s)
256256
assert_raise(IPAddr::InvalidAddressError) { a.zone_id = '%' }
257257
end
258+
259+
def test_to_range
260+
a1 = IPAddr.new("127.0.0.1")
261+
range = a1..a1
262+
assert_equal(range, a1.to_range)
263+
assert_equal(range, a1.freeze.to_range)
264+
265+
a2 = IPAddr.new("192.168.0.1/16")
266+
range = IPAddr.new("192.168.0.0")..IPAddr.new("192.168.255.255")
267+
assert_equal(range, a2.to_range)
268+
assert_equal(range, a2.freeze.to_range)
269+
270+
a3 = IPAddr.new("3ffe:505:2::1")
271+
range = a3..a3
272+
assert_equal(range, a3.to_range)
273+
assert_equal(range, a3.freeze.to_range)
274+
275+
a4 = IPAddr.new("::ffff/127")
276+
range = IPAddr.new("::fffe")..IPAddr.new("::ffff")
277+
assert_equal(range, a4.to_range)
278+
assert_equal(range, a4.freeze.to_range)
279+
end
258280
end
259281

260282
class TC_Operator < Test::Unit::TestCase

0 commit comments

Comments
 (0)