Issue #20421 has been updated by jeremyevans0 (Jeremy Evans).
Status changed from Open to Closed
Backport changed from 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.0:
UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: DONTNEED
The issue doesn't affect 3.3 and master. It appears fixed by
commit:9dcdffb8bf8a3654fd78bf1a58b30c8e13888a7a. If you would like the fix backported to
3.2, please respond.
----------------------------------------
Bug #20421: String#index and String#byteindex don't clear `$~` when offset > size
(or bytesize)
https://bugs.ruby-lang.org/issues/20421#change-108200
* Author: andrykonchin (Andrew Konchin)
* Status: Closed
* ruby -v: 3.2.2
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 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/