From c5e9beac25c3cf4e5ff317468db043455c504a73 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 16 Apr 2015 08:29:21 +0000 Subject: thread.c: class name encoding * thread.c (thread_s_new): preserve the encoding of the class name in an error message. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50328 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_thread.rb | 13 +++++++++++++ thread.c | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index 87d5f0f79e..ade680c55b 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -1033,4 +1033,17 @@ q.pop assert_not_predicate(status, :signaled?, FailDesc[status, bug9751, output]) assert_predicate(status, :success?, bug9751) end if Process.respond_to?(:fork) + + def test_subclass_no_initialize + t = Module.new do + break eval("class C\u{30b9 30ec 30c3 30c9} < Thread; self; end") + end + t.class_eval do + def initialize + end + end + assert_raise_with_message(ThreadError, /C\u{30b9 30ec 30c3 30c9}/) do + t.new {} + end + end end diff --git a/thread.c b/thread.c index bd517366cd..6cf6d52727 100644 --- a/thread.c +++ b/thread.c @@ -736,8 +736,8 @@ thread_s_new(int argc, VALUE *argv, VALUE klass) rb_obj_call_init(thread, argc, argv); GetThreadPtr(thread, th); if (!th->first_args) { - rb_raise(rb_eThreadError, "uninitialized thread - check `%s#initialize'", - rb_class2name(klass)); + rb_raise(rb_eThreadError, "uninitialized thread - check `%"PRIsVALUE"#initialize'", + klass); } return thread; } -- cgit v1.2.3