Feature #3200: String#gsub! doesn't error on frozen string
http://redmine.ruby-lang.org/issues/show/3200

Author: Brian Candler
Status: Open, Priority: Low
Category: core

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:in `squeeze!'
	from (irb):3
	from :0
>> s.tr!('b','c')
TypeError: can't modify frozen string
	from (irb):4:in `tr!'
	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


----------------------------------------
http://redmine.ruby-lang.org