summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-03-06 07:38:56 +0900
committerGitHub <[email protected]>2017-03-06 07:38:56 +0900
commit513f4fbf141e7920158ae068b92e200ad960969d (patch)
treeb1de3f68b877fb2bc0f3a2833aa300583c71680b
parent8a15abdac2d05d70018f950d428abb0957d7ebd0 (diff)
parenteba4b1fd76ae22efc23341f028deb924fdc9401c (diff)
downloadmruby-513f4fbf141e7920158ae068b92e200ad960969d.tar.gz
mruby-513f4fbf141e7920158ae068b92e200ad960969d.zip
Merge pull request #3484 from ksss/string-frozen
Check modifiable for String `bang' methods
-rw-r--r--mrbgems/mruby-string-ext/mrblib/string.rb4
-rw-r--r--mrblib/string.rb2
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)