Actions
Bug #20421
closedString#index and String#byteindex don't clear `$~` when offset > size (or bytesize)
Description
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:
"a".index(/a/)
p $~ # => #<MatchData "a">
string = "blablabla"
string.index(/bla/, string.length + 1)
p $~ # => #<MatchData "a">
Updated by jeremyevans0 (Jeremy Evans) 1 day ago
- 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 9dcdffb8bf8a3654fd78bf1a58b30c8e13888a7a. If you would like the fix backported to 3.2, please respond.
Updated by Eregon (Benoit Daloze) about 21 hours ago
- Backport changed from 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: DONTNEED to 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: DONTNEED
Given this is a clear bug (which can break programs' logic) I think it's good to backport.
Updated by Eregon (Benoit Daloze) about 21 hours ago
We should also add a test so this doesn't regress on 3.3 & master, that seems fine as a ruby_bug
spec in ruby/spec.
Updated by hsbt (Hiroshi SHIBATA) about 18 hours ago
- Backport changed from 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: DONTNEED to 3.1: REQUIRED, 3.2: REQUIRED, 3.3: DONTNEED
Actions
Like0
Like0Like0Like0Like0Like0