From 0fd37b09ee800e051fcfb433f50c70a81d811813 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 4 Sep 2010 14:48:55 +0000 Subject: [PATCH] * file.c (rb_file_s_readlink): symlink target should be in filesystem encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29181 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ file.c | 2 +- test/ruby/test_file_exhaustive.rb | 5 ++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 63701ae582..3e80e35040 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Sep 4 23:48:47 2010 Nobuyoshi Nakada + + * file.c (rb_file_s_readlink): symlink target should be in + filesystem encoding. + Sat Sep 4 10:40:50 2010 Nobuyoshi Nakada * load.c (ruby_init_ext): export for golfers. diff --git a/file.c b/file.c index 9f04b5f838..03f40942d8 100644 --- a/file.c +++ b/file.c @@ -2451,7 +2451,7 @@ rb_file_s_readlink(VALUE klass, VALUE path) xfree(buf); rb_sys_fail_path(path); } - v = rb_tainted_str_new(buf, rv); + v = rb_filesystem_str_new(buf, rv); xfree(buf); return v; diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb index 4615bceb05..5a62db1124 100644 --- a/test/ruby/test_file_exhaustive.rb +++ b/test/ruby/test_file_exhaustive.rb @@ -354,11 +354,14 @@ class TestFileExhaustive < Test::Unit::TestCase assert_raise(Errno::EEXIST) { File.link(@file, @file) } end - def test_symlink2 + def test_readlink return unless @symlinkfile assert_equal(@file, File.readlink(@symlinkfile)) assert_raise(Errno::EINVAL) { File.readlink(@file) } assert_raise(Errno::ENOENT) { File.readlink(@nofile) } + if fs = Encoding.find("filesystem") + assert_equal(fs, File.readlink(@symlinkfile).encoding) + end rescue NotImplementedError end