summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/string.c4
-rw-r--r--test/t/string.rb4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/string.c b/src/string.c
index 1c54ffa72..aa26b261c 100644
--- a/src/string.c
+++ b/src/string.c
@@ -781,6 +781,10 @@ num_index:
}
}
default:
+ indx = mrb_Integer(mrb, indx);
+ if (mrb_nil_p(indx)) {
+ mrb_raise(mrb, E_TYPE_ERROR, "can't convert to Fixnum");
+ }
idx = mrb_fixnum(indx);
goto num_index;
}
diff --git a/test/t/string.rb b/test/t/string.rb
index a56862fe2..63e4af000 100644
--- a/test/t/string.rb
+++ b/test/t/string.rb
@@ -72,6 +72,10 @@ assert('String#[]', '15.2.10.5.6') do
assert_equal 'bc', e1
assert_equal 'bc', a3
assert_nil b3
+
+ assert_raise(TypeError) do
+ a[nil]
+ end
end
assert('String#[] with Range') do