mirror of
https://github.com/ruby/ruby.git
synced 2025-08-28 15:36:16 +02:00
rb_str_{index,rindex}_m: Handle /\K/ in pattern
When the pattern Regexp given to String#index and String#rindex contain a /\K/ (lookbehind) operator, these methods return the position where the beginning of the lookbehind pattern matches, while they are expected to return the position where the \K matches. ``` # without patch "abcdbce".index(/b\Kc/) # => 1 "abcdbce".rindex(/b\Kc/) # => 4 ``` This patch fixes this problem by using BEG(0) instead of the return value of rb_reg_search. ``` # with patch "abcdbce".index(/b\Kc/) # => 2 "abcdbce".rindex(/b\Kc/) # => 5 ``` Fixes [Bug #17118]
This commit is contained in:
parent
5d71eed1a7
commit
014a4fda54
Notes:
git
2020-08-13 20:54:36 +09:00
2 changed files with 18 additions and 5 deletions
|
@ -1353,6 +1353,8 @@ CODE
|
|||
|
||||
assert_nil("foo".index(//, -100))
|
||||
assert_nil($~)
|
||||
|
||||
assert_equal(2, S("abcdbce").index(/b\Kc/))
|
||||
end
|
||||
|
||||
def test_insert
|
||||
|
@ -1525,6 +1527,8 @@ CODE
|
|||
|
||||
assert_equal(3, "foo".rindex(//))
|
||||
assert_equal([3, 3], $~.offset(0))
|
||||
|
||||
assert_equal(5, S("abcdbce").rindex(/b\Kc/))
|
||||
end
|
||||
|
||||
def test_rjust
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue