[Bug #19746] String#index
with regexp should clear $~
unless matched
This commit is contained in:
parent
9e709d0f4a
commit
0cbfeb8210
Notes:
git
2023-06-28 05:06:47 +00:00
8
string.c
8
string.c
@ -3880,8 +3880,10 @@ rb_str_index_m(int argc, VALUE *argv, VALUE str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (RB_TYPE_P(sub, T_REGEXP)) {
|
if (RB_TYPE_P(sub, T_REGEXP)) {
|
||||||
if (pos > str_strlen(str, NULL))
|
if (pos > str_strlen(str, NULL)) {
|
||||||
|
rb_backref_set(Qnil);
|
||||||
return Qnil;
|
return Qnil;
|
||||||
|
}
|
||||||
pos = str_offset(RSTRING_PTR(str), RSTRING_END(str), pos,
|
pos = str_offset(RSTRING_PTR(str), RSTRING_END(str), pos,
|
||||||
rb_enc_check(str, sub), single_byte_optimizable(str));
|
rb_enc_check(str, sub), single_byte_optimizable(str));
|
||||||
|
|
||||||
@ -3989,8 +3991,10 @@ rb_str_byteindex_m(int argc, VALUE *argv, VALUE str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (RB_TYPE_P(sub, T_REGEXP)) {
|
if (RB_TYPE_P(sub, T_REGEXP)) {
|
||||||
if (pos > RSTRING_LEN(str))
|
if (pos > RSTRING_LEN(str)) {
|
||||||
|
rb_backref_set(Qnil);
|
||||||
return Qnil;
|
return Qnil;
|
||||||
|
}
|
||||||
if (rb_reg_search(sub, str, pos, 0) < 0) {
|
if (rb_reg_search(sub, str, pos, 0) < 0) {
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
@ -1375,6 +1375,7 @@ CODE
|
|||||||
assert_raise(TypeError) { S("foo").index(Object.new) }
|
assert_raise(TypeError) { S("foo").index(Object.new) }
|
||||||
|
|
||||||
assert_index(nil, S("foo"), //, -100)
|
assert_index(nil, S("foo"), //, -100)
|
||||||
|
assert_index(nil, S("foo"), //, 4)
|
||||||
|
|
||||||
assert_index(2, S("abcdbce"), /b\Kc/)
|
assert_index(2, S("abcdbce"), /b\Kc/)
|
||||||
|
|
||||||
@ -1562,6 +1563,7 @@ CODE
|
|||||||
|
|
||||||
m = assert_rindex(3, S("foo"), //)
|
m = assert_rindex(3, S("foo"), //)
|
||||||
assert_equal([3, 3], m.offset(0))
|
assert_equal([3, 3], m.offset(0))
|
||||||
|
assert_rindex(3, S("foo"), //, 4)
|
||||||
|
|
||||||
assert_rindex(5, S("abcdbce"), /b\Kc/)
|
assert_rindex(5, S("abcdbce"), /b\Kc/)
|
||||||
|
|
||||||
@ -3380,6 +3382,7 @@ CODE
|
|||||||
assert_raise(TypeError) { S("foo").byteindex(Object.new) }
|
assert_raise(TypeError) { S("foo").byteindex(Object.new) }
|
||||||
|
|
||||||
assert_byteindex(nil, S("foo"), //, -100)
|
assert_byteindex(nil, S("foo"), //, -100)
|
||||||
|
assert_byteindex(nil, S("foo"), //, -4)
|
||||||
|
|
||||||
assert_byteindex(2, S("abcdbce"), /b\Kc/)
|
assert_byteindex(2, S("abcdbce"), /b\Kc/)
|
||||||
|
|
||||||
@ -3427,6 +3430,7 @@ CODE
|
|||||||
|
|
||||||
m = assert_byterindex(3, S("foo"), //)
|
m = assert_byterindex(3, S("foo"), //)
|
||||||
assert_equal([3, 3], m.offset(0))
|
assert_equal([3, 3], m.offset(0))
|
||||||
|
assert_byterindex(3, S("foo"), //, 4)
|
||||||
|
|
||||||
assert_byterindex(5, S("abcdbce"), /b\Kc/)
|
assert_byterindex(5, S("abcdbce"), /b\Kc/)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user