diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | error.c | 2 | ||||
-rw-r--r-- | test/ruby/test_exception.rb | 8 |
3 files changed, 14 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Tue May 4 18:51:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * error.c (name_err_mesg_to_str): preserve encoding of inspection. + [ruby-core:29948] + Tue May 4 18:38:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> * test/fileutils/test_fileutils.rb (test_copy_stream): @@ -880,7 +880,7 @@ name_err_mesg_to_str(VALUE obj) break; } if (desc && desc[0] != '#') { - d = rb_str_new2(desc); + d = d ? rb_str_dup(d) : rb_str_new2(desc); rb_str_cat2(d, ":"); rb_str_cat2(d, rb_obj_classname(obj)); } diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index d7833b9d44..18ecb404be 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -304,4 +304,12 @@ end.join end assert(!e.success?) end + + def test_nomethoderror + bug3237 = '[ruby-core:29948]' + str = "\u2600" + id = :"\u2604" + e = assert_raise(NoMethodError) {str.__send__(id)} + assert_equal("undefined method `#{id}' for #{str.inspect}:String", e.message, bug3237) + end end |