[Bug #19763] Raise same message exception for regexp
This commit is contained in:
parent
4e2f98be39
commit
e2257831ab
Notes:
git
2023-07-09 08:09:49 +00:00
5
string.c
5
string.c
@ -3861,6 +3861,7 @@ rb_str_index_m(int argc, VALUE *argv, VALUE str)
|
|||||||
{
|
{
|
||||||
VALUE sub;
|
VALUE sub;
|
||||||
VALUE initpos;
|
VALUE initpos;
|
||||||
|
rb_encoding *enc = STR_ENC_GET(str);
|
||||||
long pos;
|
long pos;
|
||||||
|
|
||||||
if (rb_scan_args(argc, argv, "11", &sub, &initpos) == 2) {
|
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;
|
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));
|
enc, single_byte_optimizable(str));
|
||||||
|
|
||||||
if (rb_reg_search(sub, str, pos, 0) < 0) {
|
if (rb_reg_search(sub, str, pos, 0) < 0) {
|
||||||
return Qnil;
|
return Qnil;
|
||||||
@ -4182,7 +4183,7 @@ rb_str_rindex_m(int argc, VALUE *argv, VALUE str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (RB_TYPE_P(sub, T_REGEXP)) {
|
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,
|
pos = str_offset(RSTRING_PTR(str), RSTRING_END(str), pos,
|
||||||
enc, single_byte_optimizable(str));
|
enc, single_byte_optimizable(str));
|
||||||
|
|
||||||
|
@ -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").index(e("\xa3")))
|
||||||
assert_nil(e("\xa1\xa2\xa3\xa4").rindex(e("\xa3")))
|
assert_nil(e("\xa1\xa2\xa3\xa4").rindex(e("\xa3")))
|
||||||
s = e("\xa3\xb0\xa3\xb1\xa3\xb2\xa3\xb3\xa3\xb4")
|
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]'
|
bug11488 = '[ruby-core:70592] [Bug #11488]'
|
||||||
each_encoding("abcdef", "def") do |str, substr|
|
each_encoding("abcdef", "def") do |str, substr|
|
||||||
assert_equal(3, str.index(substr), bug11488)
|
assert_equal(3, str.index(substr), bug11488)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user