зеркало из https://github.com/github/ruby.git
file.c: fix for UNC
* file.c (realpath_rec): UNC prefix does not end with path separator, so new separator is needed after it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
62bab7fc22
Коммит
5212b7fb52
|
@ -1,3 +1,8 @@
|
|||
Sat May 26 16:26:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* file.c (realpath_rec): UNC prefix does not end with path separator,
|
||||
so new separator is needed after it.
|
||||
|
||||
Sat May 26 15:29:22 2012 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* test/ruby/test_backtrace.rb (test_caller_lev):
|
||||
|
|
7
file.c
7
file.c
|
@ -3350,6 +3350,13 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, const char *unresolved, VALUE l
|
|||
VALUE testpath = rb_str_dup(*resolvedp);
|
||||
if (*prefixlenp < RSTRING_LEN(testpath))
|
||||
rb_str_cat2(testpath, "/");
|
||||
#if defined(DOSISH_UNC) || defined(DOSISH_DRIVE_LETTER)
|
||||
if (*prefixlenp > 1 && *prefixlenp == RSTRING_LEN(testpath)) {
|
||||
const char *prefix = RSTRING_PTR(testpath);
|
||||
const char *last = rb_enc_left_char_head(prefix, prefix + *prefixlenp - 1, prefix + *prefixlenp, enc);
|
||||
if (!isdirsep(*last)) rb_str_cat2(testpath, "/");
|
||||
}
|
||||
#endif
|
||||
rb_str_cat(testpath, testname, testnamelen);
|
||||
checkval = rb_hash_aref(loopcheck, testpath);
|
||||
if (!NIL_P(checkval)) {
|
||||
|
|
|
@ -231,6 +231,14 @@ class TestFile < Test::Unit::TestCase
|
|||
assert_equal(realdir, File.realdirpath(".", tst))
|
||||
assert_equal(File.join(realdir, "foo"), File.realdirpath("foo", tst))
|
||||
}
|
||||
begin
|
||||
result = File.realdirpath("bar", "//:/foo")
|
||||
rescue SystemCallError
|
||||
else
|
||||
if result.start_with?("//")
|
||||
assert_equal("//:/foo/bar", result)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_utime_with_minus_time_segv
|
||||
|
|
Загрузка…
Ссылка в новой задаче