diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | file.c | 1 | ||||
-rw-r--r-- | test/ruby/test_file_exhaustive.rb | 5 |
3 files changed, 10 insertions, 0 deletions
@@ -1,3 +1,7 @@ +Fri Jul 26 01:21:41 2013 NARUSE, Yui <naruse@ruby-lang.org> + + * file.c (rb_file_expand_path_internal): fix r42160; skip '~'. + Thu Jul 25 17:53:18 2013 NARUSE, Yui <naruse@ruby-lang.org> * lib/net/http.rb (Net::HTTP#connect): disable Nagle's algorithm on @@ -2990,6 +2990,7 @@ rb_file_expand_path_internal(VALUE fname, VALUE dname, int abs_mode, int long_na } else { s = nextdirsep(b = s, fend, enc); + b++; /* b[0] is '~' */ userlen = s - b; BUFCHECK(bdiff + userlen >= buflen); memcpy(p, b, userlen); diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb index 219d357cf2..2e563e53a8 100644 --- a/test/ruby/test_file_exhaustive.rb +++ b/test/ruby/test_file_exhaustive.rb @@ -669,6 +669,11 @@ class TestFileExhaustive < Test::Unit::TestCase assert_raise(ArgumentError, bug) { File.expand_path("~anything") } end if DRIVE + def test_expand_path_for_existent_username + user = ENV['USER'] + assert_equal(ENV['HOME'], File.expand_path("~#{user}")) + end unless DRIVE + def test_expand_path_error_for_nonexistent_username user = "\u{3086 3046 3066 3044}:\u{307F 3084 304A 3046}" assert_raise_with_message(ArgumentError, /#{user}/) {File.expand_path("~#{user}")} |