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; } }