From 49e259ec587fd72d96210fcb33593f3955555795 Mon Sep 17 00:00:00 2001 From: usa Date: Mon, 2 Aug 2010 03:25:12 +0000 Subject: [PATCH] * file.c (file_expand_path): wrong condition. [ruby-core:31591] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ file.c | 2 +- test/ruby/test_file_exhaustive.rb | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) 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") }