String#index shouldn't return nil when "".index ""
MODIFY
src/string.c
src/string.c
@@ -1608,7 +1608,7 @@ mrb_str_index(mrb_state *mrb, mrb_value str)
return mrb_nil_value();
}
}
- if (pos >= clen) return mrb_nil_value();
+ if (pos > clen) return mrb_nil_value();
pos = chars2bytes(str, 0, pos);
switch (mrb_type(sub)) {

MODIFY
test/t/string.rb
test/t/string.rb
@@ -402,6 +402,8 @@ assert('String#index', '15.2.10.5.22') do
assert_equal 0, 'abc'.index('a')
assert_nil 'abc'.index('d')
assert_equal 3, 'abcabc'.index('a', 1)
+ assert_equal 5, "hello".index("", 5)
+ assert_equal nil, "hello".index("", 6)
end
assert('String#initialize', '15.2.10.5.23') do

String#index shouldn't return nil when "".index ""