From 6b8b66b40197a891b6e12ee8bd3f105f47be40be Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 13 Jan 2015 03:47:55 +0000 Subject: [PATCH] range.c: class name encoding * range.c (range_bsearch): preserve encoding of class name in an exception message. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 6 +++--- test/ruby/test_range.rb | 4 ++++ 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