Closed mattn closed 5 years ago
メールにて不具合報告
■ テストコード
'abc'.slice!(/./m)
■ エラー内容 (mruby 1.4.0)
trace (most recent call last): [0] test.rb:1 [1] c:\mruby\mrbgems\mruby-string-ext\mrblib\string.rb:207:in slice! c:\mruby\mrbgems\mruby-string-ext\mrblib\string.rb:207: undefined method '<' (NoMethodError)
■ 呼び出し元 onig_regexp.rb
def slice!(*args) if args.size < 2 result = slice(*args) ### ←この先でエラー
■ 該当コード string.rb (mruby 1.4.0)
def slice!(arg1, arg2=nil) raise FrozenError, "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? idx = arg1 idx += self.size if arg1 < 0 #### ←ここでエラー
■ 該当コード string.rb (mruby 2.0.1)
def slice!(arg1, arg2=nil) (中略) if arg1.kind_of?(Range) (略) elsif arg1.kind_of?(String) validated = true else idx = arg1 idx += self.size if arg1 < 0 #### ←ここでエラー
mrubyもrubyも最近始めたばかりで、私はド素人なのですが 本家のString.slice!がarg1を文字列か数値でしか判断していないので、 arg1がRegexpだった場合、それを呼ばずに別の処理が必要ではないでしょうか。
ダウト!
mrubyもrubyも最近始めたばかりで、私はド素人なのですが
なるほど、よくわからないです(めんどくさい非互換系ですかね...
どうしようかなーと思ってて、mruby-string-ext 側に手を入れるか、そっちを呼ばせないように直すか。
性能多少悪くても本体はない前提で作るべきな気がするので、呼ばせないほうですかねー(めんどくさそう
メールにて不具合報告
■ テストコード
■ エラー内容 (mruby 1.4.0)
■ 呼び出し元 onig_regexp.rb
■ 該当コード string.rb (mruby 1.4.0)
■ 該当コード string.rb (mruby 2.0.1)
mrubyもrubyも最近始めたばかりで、私はド素人なのですが 本家のString.slice!がarg1を文字列か数値でしか判断していないので、 arg1がRegexpだった場合、それを呼ばずに別の処理が必要ではないでしょうか。