-
Notifications
You must be signed in to change notification settings - Fork 39
Closed
Description
After freezing IPAddr instance, a lot of methods die with FrozenError: can't modify frozen IPAddr.
$ RBENV_VERSION=3.1.0-dev irb
ruby 3.1.0dev (2021-12-08T23:58:25Z master 45c5794d32) [x86_64-linux]
irb(main):001:0> require 'ipaddr'
=> true
irb(main):002:0> IPAddr.new('127.0.0.1').freeze.to_range
/usr/local/anyenv/envs/rbenv/versions/3.1.0-dev/lib/ruby/3.1.0/ipaddr.rb:509:in `set': can't modify frozen IPAddr: #<IPAddr: IPv4:127.0.0.1/255.255.255.255> (FrozenError)
from /usr/local/anyenv/envs/rbenv/versions/3.1.0-dev/lib/ruby/3.1.0/ipaddr.rb:413:in `to_range'
irb(main):003:0> IPAddr.new('127.0.0.1').freeze.include?('127.0.0.1')
/usr/local/anyenv/envs/rbenv/versions/3.1.0-dev/lib/ruby/3.1.0/ipaddr.rb:509:in `set': can't modify frozen IPAddr: #<IPAddr: IPv4:127.0.0.1/255.255.255.255> (FrozenError)
from /usr/local/anyenv/envs/rbenv/versions/3.1.0-dev/lib/ruby/3.1.0/ipaddr.rb:413:in `to_range'
from /usr/local/anyenv/envs/rbenv/versions/3.1.0-dev/lib/ruby/3.1.0/ipaddr.rb:178:in `include?'
irb(main):004:0> IPAddr.new('127.0.0.1').freeze.succ
/usr/local/anyenv/envs/rbenv/versions/3.1.0-dev/lib/ruby/3.1.0/ipaddr.rb:509:in `set': can't modify frozen IPAddr: #<IPAddr: IPv4:127.0.0.1/255.255.255.255> (FrozenError)
from /usr/local/anyenv/envs/rbenv/versions/3.1.0-dev/lib/ruby/3.1.0/ipaddr.rb:377:in `succ'
It seems that clone.set() in these methods should be clone(freeze: false).set() or dup.set()
Metadata
Metadata
Assignees
Labels
No labels