From 0998c2dd0691b5982a5e08471ee99d9bd206f7fc Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 18 Feb 2015 16:58:13 +0000 Subject: win32/file.c: fix drive letter * win32/file.c (rb_file_expand_path_internal): neither the drive of base directory nor the current drive are involved in the result if different than the drive of path. [ruby-core:68130] [Bug #10858] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ test/ruby/test_file_exhaustive.rb | 1 + win32/file.c | 1 + 3 files changed, 9 insertions(+) diff --git a/ChangeLog b/ChangeLog index 6bcf508834..aa171b5b24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Thu Feb 19 01:58:10 2015 Nobuyoshi Nakada + + * win32/file.c (rb_file_expand_path_internal): neither the drive + of base directory nor the current drive are involved in the + result if different than the drive of path. + [ruby-core:68130] [Bug #10858] + Wed Feb 18 10:48:56 2015 Nobuyoshi Nakada * win32/win32.c (wrename): return EXDEV if moving a directory to diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb index 96e36b9d69..0c16a01453 100644 --- a/test/ruby/test_file_exhaustive.rb +++ b/test/ruby/test_file_exhaustive.rb @@ -447,6 +447,7 @@ class TestFileExhaustive < Test::Unit::TestCase assert_equal(@file, File.expand_path(@file + "::$DATA")) assert_match(/\Ac:\//i, File.expand_path('c:'), '[ruby-core:31591]') assert_match(/\Ac:\//i, File.expand_path('c:foo', 'd:/bar')) + assert_match(/\Ae:\//i, File.expand_path('e:foo', 'd:/bar')) assert_match(%r'\Ac:/bar/foo\z'i, File.expand_path('c:foo', 'c:/bar')) when /darwin/ ["\u{feff}", *"\u{2000}"..."\u{2100}"].each do |c| diff --git a/win32/file.c b/win32/file.c index 36df39f2fa..0fddaaaa8e 100644 --- a/win32/file.c +++ b/win32/file.c @@ -501,6 +501,7 @@ rb_file_expand_path_internal(VALUE fname, VALUE dname, int abs_mode, int long_na /* ignore dir since path drive is different from dir drive */ ignore_dir = 1; wdir_len = 0; + dir_drive = 0; } } -- cgit v1.2.3