diff --git a/ChangeLog b/ChangeLog index 43fc95ba80..72f2be2685 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Aug 2 12:22:22 2010 NAKAMURA Usaku + + * file.c (file_expand_path): wrong condition. [ruby-core:31591] + Mon Aug 2 05:34:48 2010 Tanaka Akira * ext/pathname/pathname.c (path_realdirpath): Pathname#realdirpath diff --git a/file.c b/file.c index f49b46dcbb..712d60ef45 100644 --- a/file.c +++ b/file.c @@ -2897,7 +2897,7 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result) else { /* specified drive, but not full path */ int same = 0; - if (!NIL_P(dname) || !not_same_drive(dname, s[0])) { + if (!NIL_P(dname) && !not_same_drive(dname, s[0])) { file_expand_path(dname, Qnil, abs_mode, result); BUFINIT(); if (has_drive_letter(p) && TOLOWER(p[0]) == TOLOWER(s[0])) { diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb index 5344494679..4615bceb05 100644 --- a/test/ruby/test_file_exhaustive.rb +++ b/test/ruby/test_file_exhaustive.rb @@ -393,6 +393,7 @@ class TestFileExhaustive < Test::Unit::TestCase assert_equal(@file, File.expand_path(@file + " ")) assert_equal(@file, File.expand_path(@file + ".")) assert_equal(@file, File.expand_path(@file + "::$DATA")) + assert_match(/\Ac:\//i, File.expand_path('c:'), '[ruby-core:31591]') end assert_kind_of(String, File.expand_path("~")) assert_raise(ArgumentError) { File.expand_path("~foo_bar_baz_unknown_user_wahaha") }