diff options
| author | ksss <[email protected]> | 2017-03-05 22:57:56 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2017-03-05 23:04:22 +0900 |
| commit | eba4b1fd76ae22efc23341f028deb924fdc9401c (patch) | |
| tree | 9ef7f5ed658a8f2971370b913be0a424bad63ced | |
| parent | d050694580e99bc5699da36640d8ce2b4e93c5d0 (diff) | |
| download | mruby-eba4b1fd76ae22efc23341f028deb924fdc9401c.tar.gz mruby-eba4b1fd76ae22efc23341f028deb924fdc9401c.zip | |
Check modifiable for String `bang' methods
| -rw-r--r-- | mrbgems/mruby-string-ext/mrblib/string.rb | 4 | ||||
| -rw-r--r-- | mrblib/string.rb | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb index 8895b7ad3..36b0218a7 100644 --- a/mrbgems/mruby-string-ext/mrblib/string.rb +++ b/mrbgems/mruby-string-ext/mrblib/string.rb @@ -95,6 +95,7 @@ class String # "hello".lstrip! #=> nil # def lstrip! + raise RuntimeError, "can't modify frozen String" if frozen? s = self.lstrip (s == self) ? nil : self.replace(s) end @@ -111,6 +112,7 @@ class String # "hello".rstrip! #=> nil # def rstrip! + raise RuntimeError, "can't modify frozen String" if frozen? s = self.rstrip (s == self) ? nil : self.replace(s) end @@ -123,6 +125,7 @@ class String # <code>nil</code> if <i>str</i> was not altered. # def strip! + raise RuntimeError, "can't modify frozen String" if frozen? s = self.strip (s == self) ? nil : self.replace(s) end @@ -183,6 +186,7 @@ class String # string #=> "thsa sting" # def slice!(arg1, arg2=nil) + raise RuntimeError, "can't modify frozen String" if frozen? raise "wrong number of arguments (for 1..2)" if arg1.nil? && arg2.nil? if !arg1.nil? && !arg2.nil? diff --git a/mrblib/string.rb b/mrblib/string.rb index aa2ca9973..b13cfd69a 100644 --- a/mrblib/string.rb +++ b/mrblib/string.rb @@ -78,6 +78,7 @@ class String # # ISO 15.2.10.5.19 def gsub!(*args, &block) + raise RuntimeError, "can't modify frozen String" if frozen? str = self.gsub(*args, &block) return nil if str == self self.replace(str) @@ -123,6 +124,7 @@ class String # # ISO 15.2.10.5.37 def sub!(*args, &block) + raise RuntimeError, "can't modify frozen String" if frozen? str = self.sub(*args, &block) return nil if str == self self.replace(str) |
