aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-10 08:22:03 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-10 08:22:03 +0000
commit24974c0ea15e7d1c221505880229d6be51862f92 (patch)
treeb85bc2ba5c4017dd806ebb802936bde5fecafc40
parent826341c7180cffe56fb1fb390360d0a95a21d73c (diff)
downloadruby-24974c0ea15e7d1c221505880229d6be51862f92.tar.gz
gc.c: preserve encoding
* gc.c (should_be_callable): preserve encoding of class name in error messages. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--gc.c4
-rw-r--r--test/ruby/test_objectspace.rb5
2 files changed, 7 insertions, 2 deletions
diff --git a/gc.c b/gc.c
index df9e919655..f070b11b64 100644
--- a/gc.c
+++ b/gc.c
@@ -2279,8 +2279,8 @@ static void
should_be_callable(VALUE block)
{
if (!rb_obj_respond_to(block, rb_intern("call"), TRUE)) {
- rb_raise(rb_eArgError, "wrong type argument %s (should be callable)",
- rb_obj_classname(block));
+ rb_raise(rb_eArgError, "wrong type argument %"PRIsVALUE" (should be callable)",
+ rb_obj_class(block));
}
}
static void
diff --git a/test/ruby/test_objectspace.rb b/test/ruby/test_objectspace.rb
index a4198f8ed4..de7c6be916 100644
--- a/test/ruby/test_objectspace.rb
+++ b/test/ruby/test_objectspace.rb
@@ -78,6 +78,11 @@ End
end
assert_in_out_err([], code[""], ["finalized"])
assert_in_out_err([], code["private "], ["finalized"])
+ c = EnvUtil.labeled_class("C\u{3042}").new
+ o = Object.new
+ assert_raise_with_message(ArgumentError, /C\u{3042}/) {
+ ObjectSpace.define_finalizer(o, c)
+ }
end
def test_each_object