Project

General

Profile

Actions

Bug #20421

closed

String#index and String#byteindex don't clear `$~` when offset > size (or bytesize)

Added by andrykonchin (Andrew Konchin) 27 days ago. Updated about 18 hours ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:117494]

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">
Actions #1

Updated by andrykonchin (Andrew Konchin) 27 days ago

  • Description updated (diff)

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.

Actions #5

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

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0