summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-10-11 05:15:03 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-10-11 05:15:03 +0000
commit44691b901e4d93debf64af33d4349662553e61e5 (patch)
treea4370e0d7efab45c065f085caf597a233ecf978e
parent47cb5a93e50c26114434dddb3008e5e4912a76f5 (diff)
* error.c (syserr_initialize): set the encoding of Errno::*#message
as locale. [ruby-dev:42358] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--error.c1
-rw-r--r--test/ruby/test_exception.rb4
3 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 4f39553386..6acde0d7ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Oct 11 14:03:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (syserr_initialize): set the encoding of Errno::*#message
+ as locale. [ruby-dev:42358]
+
Mon Oct 11 06:38:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
* ext/stringio/stringio.c (strio_set_encoding):
diff --git a/error.c b/error.c
index 479caff213..f05600f7fb 100644
--- a/error.c
+++ b/error.c
@@ -1057,6 +1057,7 @@ syserr_initialize(int argc, VALUE *argv, VALUE self)
else {
mesg = rb_str_new2(err);
}
+ rb_enc_associate(mesg, rb_locale_encoding());
rb_call_super(1, &mesg);
rb_iv_set(self, "errno", error);
return self;
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb
index 18ecb404be..a26ade075b 100644
--- a/test/ruby/test_exception.rb
+++ b/test/ruby/test_exception.rb
@@ -312,4 +312,8 @@ end.join
e = assert_raise(NoMethodError) {str.__send__(id)}
assert_equal("undefined method `#{id}' for #{str.inspect}:String", e.message, bug3237)
end
+
+ def test_errno
+ assert_equal(Encoding.find("locale"), Errno::EINVAL.new.message.encoding)
+ end
end