🤖

[Bug #20421] $~ の値が正しくクリアされないバグ報告

2024/05/20に公開

[Bug #20421] String#index and String#byteindex don't clear $~ when offset > size (or bytesize)

  • $~ の値が正しくクリアされないというバグ報告
  • 次のように offset の値が対象の文字列のサイズよりも大きいとクリアされない
"a".index(/a/)
p $~ # => #<MatchData "a">

string = "blablabla"
# これはマッチしないので nil を返す
p string.index(/bla/, string.length + 1) # => nil

# しかし $~ の値はそのままになっている
p $~ # => #<MatchData "a">
  • この不具合はパッチバージョンにバックポート済み
"a".index(/a/)
p $~ # => #<MatchData "a">

string = "blablabla"
string.index(/bla/, string.length + 1)
p $~
# Ruby 3.2.3, 3.3.0 => #<MatchData "a">
# Ruby 3.2.4, 3.3.1 => nil
  • こんなバグがあったんですねー
GitHubで編集を提案

Discussion