From f375a8b40ec65991df54d84856851c2149f11211 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 26 Jul 2013 04:02:01 +0000 Subject: [PATCH] file.c: use rb_str_conv_enc * file.c (rb_str_encode_ospath): simplify using rb_str_conv_enc(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42181 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 +++- file.c | 13 +++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad6582ac36..e5285235c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,6 @@ -Fri Jul 26 13:01:04 2013 Nobuyoshi Nakada +Fri Jul 26 13:01:57 2013 Nobuyoshi Nakada + + * file.c (rb_str_encode_ospath): simplify using rb_str_conv_enc(). * win32/file.c (fix_string_encoding): simplify with rb_str_conv_enc(). diff --git a/file.c b/file.c index b3b6f2a2bb..ceed58d774 100644 --- a/file.c +++ b/file.c @@ -229,15 +229,12 @@ rb_str_encode_ospath(VALUE path) { #ifdef _WIN32 rb_encoding *enc = rb_enc_get(path); - if (enc != rb_ascii8bit_encoding()) { - rb_encoding *utf8 = rb_utf8_encoding(); - if (enc != utf8) - path = rb_str_encode(path, rb_enc_from_encoding(utf8), 0, Qnil); + rb_encoding *utf8 = rb_utf8_encoding(); + if (enc == rb_ascii8bit_encoding()) { + enc = rb_filesystem_encoding(); } - else if (RSTRING_LEN(path) > 0) { - path = rb_str_dup(path); - rb_enc_associate(path, rb_filesystem_encoding()); - path = rb_str_encode(path, rb_enc_from_encoding(rb_utf8_encoding()), 0, Qnil); + if (enc != utf8) { + path = rb_str_conv_enc(path, enc, utf8); } #endif return path;