From 23bb4d7898bcafad7b2b46339994b650aef60a42 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 11 Apr 2008 18:12:18 +0000 Subject: * file.c (rb_file_s_basename, rb_file_s_dirname, rb_file_s_extname): copy encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- file.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'file.c') diff --git a/file.c b/file.c index 1d24b42017..c0ffa766db 100644 --- a/file.c +++ b/file.c @@ -2880,6 +2880,7 @@ rb_file_s_basename(int argc, VALUE *argv) } } basename = rb_str_new(p, f); + rb_enc_copy(basename, fname); OBJ_INFECT(basename, fname); return basename; } @@ -2931,6 +2932,7 @@ rb_file_s_dirname(VALUE klass, VALUE fname) if (has_drive_letter(name) && root == name + 2 && p - name == 2) rb_str_cat(dirname, ".", 1); #endif + rb_enc_copy(dirname, fname); OBJ_INFECT(dirname, fname); return dirname; } @@ -2967,6 +2969,7 @@ rb_file_s_extname(VALUE klass, VALUE fname) if (!e || e == p || !e[1]) /* no dot, or the only dot is first or end? */ return rb_str_new(0, 0); extname = rb_str_new(e, chompdirsep(e) - e); /* keep the dot, too! */ + rb_enc_copy(extname, fname); OBJ_INFECT(extname, fname); return extname; } -- cgit v1.2.3