Skip to content

Commit eba4b1f

Browse files
committed
Check modifiable for String `bang' methods
1 parent d050694 commit eba4b1f

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

mrbgems/mruby-string-ext/mrblib/string.rb

+4
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def strip
9595
# "hello".lstrip! #=> nil
9696
#
9797
def lstrip!
98+
raise RuntimeError, "can't modify frozen String" if frozen?
9899
s = self.lstrip
99100
(s == self) ? nil : self.replace(s)
100101
end
@@ -111,6 +112,7 @@ def lstrip!
111112
# "hello".rstrip! #=> nil
112113
#
113114
def rstrip!
115+
raise RuntimeError, "can't modify frozen String" if frozen?
114116
s = self.rstrip
115117
(s == self) ? nil : self.replace(s)
116118
end
@@ -123,6 +125,7 @@ def rstrip!
123125
# <code>nil</code> if <i>str</i> was not altered.
124126
#
125127
def strip!
128+
raise RuntimeError, "can't modify frozen String" if frozen?
126129
s = self.strip
127130
(s == self) ? nil : self.replace(s)
128131
end
@@ -183,6 +186,7 @@ def rpartition(sep)
183186
# string #=> "thsa sting"
184187
#
185188
def slice!(arg1, arg2=nil)
189+
raise RuntimeError, "can't modify frozen String" if frozen?
186190
raise "wrong number of arguments (for 1..2)" if arg1.nil? && arg2.nil?
187191

188192
if !arg1.nil? && !arg2.nil?

mrblib/string.rb

+2
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def gsub(*args, &block)
7878
#
7979
# ISO 15.2.10.5.19
8080
def gsub!(*args, &block)
81+
raise RuntimeError, "can't modify frozen String" if frozen?
8182
str = self.gsub(*args, &block)
8283
return nil if str == self
8384
self.replace(str)
@@ -123,6 +124,7 @@ def sub(*args, &block)
123124
#
124125
# ISO 15.2.10.5.37
125126
def sub!(*args, &block)
127+
raise RuntimeError, "can't modify frozen String" if frozen?
126128
str = self.sub(*args, &block)
127129
return nil if str == self
128130
self.replace(str)

0 commit comments

Comments
 (0)