summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-11 18:12:18 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-11 18:12:18 +0000
commit23bb4d7898bcafad7b2b46339994b650aef60a42 (patch)
treecd5b76fcb0188f9dc2d232f281a5642efe4a8cc1 /file.c
parent3734fd0e7906c964c1a11910a0a1affb703d758a (diff)
* 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
Diffstat (limited to 'file.c')
-rw-r--r--file.c3
1 files changed, 3 insertions, 0 deletions
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;
}