From 5e808b6ba38dbd974b617e80e2cf054eaaca604f Mon Sep 17 00:00:00 2001 From: naruse Date: Sat, 25 Feb 2012 12:25:55 +0000 Subject: merge revision(s) 34794,34795: * dir.c (dir_initialize): keep path in original encoding. * error.c (syserr_initialize): prefer the encoding of message over locale. [ruby-dev:45279][Bug #6071] * dir.c (dir_inspect), io.c (rb_io_inspect): keep encoding of path. [Bug #6072] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@34813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- error.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'error.c') diff --git a/error.c b/error.c index e5ca4e7c90..db9a46f72f 100644 --- a/error.c +++ b/error.c @@ -1128,15 +1128,13 @@ syserr_initialize(int argc, VALUE *argv, VALUE self) else err = "unknown error"; if (!NIL_P(mesg)) { rb_encoding *le = rb_locale_encoding(); - VALUE str = mesg; + VALUE str = StringValue(mesg); + rb_encoding *me = rb_enc_get(mesg); - StringValue(str); mesg = rb_sprintf("%s - %.*s", err, (int)RSTRING_LEN(str), RSTRING_PTR(str)); - if (le == rb_usascii_encoding()) { - rb_encoding *me = rb_enc_get(mesg); - if (le != me && rb_enc_asciicompat(me)) - le = me; + if (le != me && rb_enc_asciicompat(me)) { + le = me; }/* else assume err is non ASCII string. */ OBJ_INFECT(mesg, str); rb_enc_associate(mesg, le); -- cgit v1.2.3