From 76e10351faa20301f73a333b13f94a41059baf14 Mon Sep 17 00:00:00 2001 From: ksss Date: Sun, 5 Mar 2017 14:15:18 +0900 Subject: String#index shouldn't return nil when "".index "" --- src/string.c | 2 +- test/t/string.rb | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/string.c b/src/string.c index 9efc89b34..c36b7524a 100644 --- a/src/string.c +++ b/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)) { diff --git a/test/t/string.rb b/test/t/string.rb index 20dc49d92..442c95bf7 100644 --- a/test/t/string.rb +++ b/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 -- cgit v1.2.3