summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--range.c6
-rw-r--r--test/ruby/test_range.rb4
2 files changed, 7 insertions, 3 deletions
diff --git a/range.c b/range.c
index ae16ae4dd5..92117650e8 100644
--- a/range.c
+++ b/range.c
@@ -608,9 +608,9 @@ range_bsearch(VALUE range)
smaller = cmp < 0; \
} \
else { \
- rb_raise(rb_eTypeError, "wrong argument type %s" \
- " (must be numeric, true, false or nil)", \
- rb_obj_classname(v)); \
+ rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE \
+ " (must be numeric, true, false or nil)", \
+ rb_obj_class(v)); \
} \
} while (0)
diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb
index f81047df06..dc07a59fcd 100644
--- a/test/ruby/test_range.rb
+++ b/test/ruby/test_range.rb
@@ -378,6 +378,10 @@ class TestRange < Test::Unit::TestCase
assert_raise(TypeError) do
(1..42).bsearch{ "not ok" }
end
+ c = eval("class C\u{309a 26a1 26c4 1f300};self;end")
+ assert_raise_with_message(TypeError, /C\u{309a 26a1 26c4 1f300}/) do
+ (1..42).bsearch {c.new}
+ end
assert_equal (1..42).bsearch{}, (1..42).bsearch{false}
end