
Issue #20421 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 3.1: REQUIRED, 3.2: REQUIRED, 3.3: DONTNEED to 3.1: REQUIRED, 3.2: DONE, 3.3: DONTNEED Thank you for the PR. I agree that the patch is good to backport. PR merged at 449899b38314d0ecbe61e42d34398bdf2561b8e9. ---------------------------------------- Bug #20421: String#index and String#byteindex don't clear `$~` when offset > size (or bytesize) https://bugs.ruby-lang.org/issues/20421#change-108289 * Author: andrykonchin (Andrew Konchin) * Status: Closed * ruby -v: 3.2.2 * Backport: 3.1: REQUIRED, 3.2: DONE, 3.3: DONTNEED ---------------------------------------- When String#index and String#byteindex are called with Regexp and offset they clear `$~` (that contains result of the last Regexp matching) when offset < -size. But they don't clear `$~` when offset > size what seems inconsistent: ```ruby "a".index(/a/) p $~ # => #<MatchData "a"> string = "blablabla" string.index(/bla/, string.length + 1) p $~ # => #<MatchData "a"> ``` -- https://bugs.ruby-lang.org/