This project is closed and read-only.
Backport #3200
closedString#gsub! doesn't error on frozen string
Description
=begin
gsub! does not raise an error on a frozen string unless a change is actually made. e.g.
s = "a".freeze
=> "a"
s.gsub!(/b/,'')
=> nil
But this is inconsistent with other mutating methods on frozen strings, e.g.
s.squeeze!
TypeError: can't modify frozen string
from (irb):3:insqueeze!' from (irb):3 from :0 s.tr!('b','c') TypeError: can't modify frozen string from (irb):4:intr!'
from (irb):4
from :0
Not sure if this unexpected behaviour is "bug" or "feature". The ri documentation of String#gsub! doesn't mention this anomaly.
Tested with ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux] from Ubuntu Karmic
=end
Updated by nobu (Nobuyoshi Nakada) over 16 years ago
=begin
1.9.2 does raise an exception, so I guess it would be
"backport".
=end
Updated by jeremyevans0 (Jeremy Evans) about 7 years ago
- Project changed from 2 to 5
- Description updated (diff)
- Status changed from Open to Closed