diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-07-25 16:33:57 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-07-25 16:33:57 +0000 |
commit | f86be91b56c39808ca71056f40e4cf1c786c89b3 (patch) | |
tree | a1c8edc9c575aed842f2f49e98ce4f32ad21ca87 | |
parent | 044e75db6d810dece06d8a7921aae18a6024faa8 (diff) | |
download | ruby-f86be91b56c39808ca71056f40e4cf1c786c89b3.tar.gz |
* file.c (rb_file_expand_path_internal): fix r42160; skip '~'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42171 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-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}")} |