summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-04 09:51:27 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-04 09:51:27 +0000
commite8249be9fca2ebfc101f7fc3d14ee935391cd797 (patch)
treebe9d81ffc6cbc86258090c94412100e3d2dc50ed
parent16c40ec1a5258250876b3b95a299397a79244a10 (diff)
* error.c (name_err_mesg_to_str): preserve encoding of inspection.
[ruby-core:29948] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--error.c2
-rw-r--r--test/ruby/test_exception.rb8
3 files changed, 14 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index a3692f5bef..7705b7062f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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):
diff --git a/error.c b/error.c
index 3fcd18478d..2cced9aa62 100644
--- a/error.c
+++ b/error.c
@@ -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