aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--object.c7
-rw-r--r--test/ruby/test_object.rb4
2 files changed, 8 insertions, 3 deletions
diff --git a/object.c b/object.c
index 6f4b1239c8..c70ce4978e 100644
--- a/object.c
+++ b/object.c
@@ -354,14 +354,15 @@ rb_obj_clone2(int argc, VALUE *argv, VALUE obj)
rb_get_kwargs(opt, keyword_ids, 0, 1, kwargs);
kwfreeze = kwargs[0];
if (kwfreeze != Qundef && kwfreeze != Qtrue && kwfreeze != Qfalse) {
- rb_raise(rb_eArgError, "unexpected value for freeze: %s",
- rb_builtin_class_name(kwfreeze));
+ rb_raise(rb_eArgError, "unexpected value for freeze: %"PRIsVALUE,
+ rb_obj_class(kwfreeze));
}
}
if (special_object_p(obj)) {
if (kwfreeze == Qfalse)
- rb_raise(rb_eArgError, "can't unfreeze %s", rb_obj_classname(obj));
+ rb_raise(rb_eArgError, "can't unfreeze %"PRIsVALUE,
+ rb_obj_class(obj));
return obj;
}
clone = rb_obj_alloc(rb_obj_class(obj));
diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb
index 7c1b98f76e..d93d5594a7 100644
--- a/test/ruby/test_object.rb
+++ b/test/ruby/test_object.rb
@@ -61,6 +61,10 @@ class TestObject < Test::Unit::TestCase
assert_raise(ArgumentError) {true.clone(freeze: false)}
assert_raise(ArgumentError) {nil.clone(freeze: false)}
assert_raise(ArgumentError) {false.clone(freeze: false)}
+ x = EnvUtil.labeled_class("\u{1f4a9}").new
+ assert_raise_with_message(ArgumentError, /\u{1f4a9}/) do
+ Object.new.clone(freeze: x)
+ end
end
def test_init_dupclone