[Bug #19763] Raise same message exception for regexp

This commit is contained in:
Nobuyoshi Nakada 2023-07-09 01:38:33 +09:00
parent 4e2f98be39
commit e2257831ab
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465
Notes: git 2023-07-09 08:09:49 +00:00
2 changed files with 20 additions and 3 deletions

View File

@ -3861,6 +3861,7 @@ rb_str_index_m(int argc, VALUE *argv, VALUE str)
{
VALUE sub;
VALUE initpos;
rb_encoding *enc = STR_ENC_GET(str);
long pos;
if (rb_scan_args(argc, argv, "11", &sub, &initpos) == 2) {
@ -3885,7 +3886,7 @@ rb_str_index_m(int argc, VALUE *argv, VALUE str)
return Qnil;
}
pos = str_offset(RSTRING_PTR(str), RSTRING_END(str), pos,
rb_enc_check(str, sub), single_byte_optimizable(str));
enc, single_byte_optimizable(str));
if (rb_reg_search(sub, str, pos, 0) < 0) {
return Qnil;
@ -4182,7 +4183,7 @@ rb_str_rindex_m(int argc, VALUE *argv, VALUE str)
}
if (RB_TYPE_P(sub, T_REGEXP)) {
/* enc = rb_get_check(str, sub); */
/* enc = rb_enc_check(str, sub); */
pos = str_offset(RSTRING_PTR(str), RSTRING_END(str), pos,
enc, single_byte_optimizable(str));

View File

@ -1090,7 +1090,23 @@ class TestM17N < Test::Unit::TestCase
assert_nil(e("\xa1\xa2\xa3\xa4").index(e("\xa3")))
assert_nil(e("\xa1\xa2\xa3\xa4").rindex(e("\xa3")))
s = e("\xa3\xb0\xa3\xb1\xa3\xb2\xa3\xb3\xa3\xb4")
assert_raise(Encoding::CompatibilityError){s.rindex(a("\xb1\xa3"))}
a_with_e = /EUC-JP and ASCII-8BIT/
assert_raise_with_message(Encoding::CompatibilityError, a_with_e) do
s.index(a("\xb1\xa3"))
end
assert_raise_with_message(Encoding::CompatibilityError, a_with_e) do
s.rindex(a("\xb1\xa3"))
end
a_with_e = /ASCII-8BIT regexp with EUC-JP string/
assert_raise_with_message(Encoding::CompatibilityError, a_with_e) do
s.index(Regexp.new(a("\xb1\xa3")))
end
assert_raise_with_message(Encoding::CompatibilityError, a_with_e) do
s.rindex(Regexp.new(a("\xb1\xa3")))
end
bug11488 = '[ruby-core:70592] [Bug #11488]'
each_encoding("abcdef", "def") do |str, substr|
assert_equal(3, str.index(substr), bug11488)