[#46930] [ruby-trunk - Bug #6825][Open] forking and pthread_cond_timedwait: Invalid argument (EINVAL) on OS X / 1.9.3-p194 — "xentronium (Mark A)" <markizko@...>

29 messages 2012/08/02

[#46974] [ruby-trunk - Bug #6830][Assigned] test failure test_constants(OpenSSL::TestConfig) [/ruby/test/openssl/test_config.rb:27] on Mac + homebrew — "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>

17 messages 2012/08/04

[#46975] [ruby-trunk - Bug #6831][Assigned] test_getpwuid() on Mountain Lion — "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>

12 messages 2012/08/04

[#46996] [ruby-trunk - Bug #6836][Assigned] Improve File.expand_path performance in Windows — "luislavena (Luis Lavena)" <luislavena@...>

15 messages 2012/08/04

[#47036] [ruby-trunk - Feature #6841][Open] Shorthand for Assigning Return Value of Method to Self — "wardrop (Tom Wardrop)" <tom@...>

18 messages 2012/08/07

[#47108] [ruby-trunk - Feature #6852][Open] [].transpose should behave specially — "boris_stitnicky (Boris Stitnicky)" <boris@...>

13 messages 2012/08/10

[#47138] [ruby-trunk - Bug #6861][Open] ERB::Util.escape_html is not escaping single quotes — "spastorino (Santiago Pastorino)" <santiago@...>

14 messages 2012/08/12

[#47163] [ruby-trunk - Bug #6865][Open] GC::Profiler.report might create a huge String and invoke a few GC cycles — "Eregon (Benoit Daloze)" <redmine@...>

9 messages 2012/08/13

[#47189] [ruby-trunk - Feature #6868][Open] Make `do` in block syntax optional when the block is the last argument of a method and is not an optional argument — "alexeymuranov (Alexey Muranov)" <redmine@...>

8 messages 2012/08/14

[#47243] [ruby-trunk - Feature #6895][Open] TracePoint API — "ko1 (Koichi Sasada)" <redmine@...>

27 messages 2012/08/20

[#47267] [ruby-trunk - Bug #6903][Open] [[Ruby 1.9:]] --enable-load-relative broken on systems with /lib64 — "mpapis (Michal Papis)" <mpapis@...>

11 messages 2012/08/22

[#47309] [ruby-trunk - Bug #6929][Open] Documentation for Ripper — "zzak (Zachary Scott)" <zachary@...>

16 messages 2012/08/25

[#47345] [ruby-trunk - Feature #6946][Open] FIPS support? — "vo.x (Vit Ondruch)" <v.ondruch@...>

35 messages 2012/08/28

[ruby-core:47109] [ruby-trunk - Bug #6851] Result of File.stat("c:/...") is different from 1.9.3

From: "h.shirosaki (Hiroshi Shirosaki)" <h.shirosaki@...>
Date: 2012-08-10 11:56:56 UTC
List: ruby-core #47109
Issue #6851 has been updated by h.shirosaki (Hiroshi Shirosaki).


The behavior is same (not raises exception) as before r36668.


C:\>ruby -ve "p File.stat('C:/...')"
ruby 2.0.0dev (2012-08-08 trunk 36657) [i386-mswin32_100]
#<File::Stat dev=0x2, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x2, size=
0, blksize=nil, blocks=nil, atime=1970-01-01 09:00:00 +0900, mtime=1970-01-01 09
:00:00 +0900, ctime=1970-01-01 09:00:00 +0900>

C:\>ruby -ve "p File.stat('C:/....')"
ruby 2.0.0dev (2012-08-08 trunk 36657) [i386-mswin32_100]
#<File::Stat dev=0x2, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x2, size=
0, blksize=nil, blocks=nil, atime=1970-01-01 09:00:00 +0900, mtime=1970-01-01 09
:00:00 +0900, ctime=1970-01-01 09:00:00 +0900>


That seems due to r34205 and r34216.
Revert will solve this issue, but #5819 is not solved on the following corner case.
I think revert might be better. What do you think?


x:\ is empty drive. (ramdisk)

# this case is ok
C:\>miniruby -I. -e "p File.stat('x:/')"
#<File::Stat dev=0x17, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x17, size=0, blksize=nil, bl
ocks=nil, atime=2012-08-10 19:48:37 +0900, mtime=2012-08-10 19:48:37 +0900, ctime=2012-08-10 19:48:3
7 +0900>

# but this case fails
C:\>miniruby -I. -e "p File.stat('x:/.../..')"
-e:1:in `stat': No such file or directory - x:/.../.. (Errno::ENOENT)
        from -e:1:in `<main>'



diff --git a/win32/win32.c b/win32/win32.c
index de655df..11f20ba 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -4562,15 +4562,6 @@ check_valid_dir(const WCHAR *path)
     if (wcsstr(path, L"...") == NULL)
 	return 0;
 
-    /* if the specified path is the root of a drive and the drive is empty, */
-    /* FindFirstFile() returns INVALID_HANDLE_VALUE. */
-    if (!GetFullPathNameW(path, sizeof(full) / sizeof(WCHAR), full, &dmy)) {
-	errno = map_errno(GetLastError());
-	return -1;
-    }
-    if (full[1] == L':' && !full[3] && GetDriveTypeW(full) != DRIVE_NO_ROOT_DIR)
-	return 0;
-
     fh = open_dir_handle(path, &fd);
     if (fh == INVALID_HANDLE_VALUE)
 	return -1;

----------------------------------------
Bug #6851: Result of File.stat("c:/...") is different from 1.9.3
https://bugs.ruby-lang.org/issues/6851#change-28759

Author: phasis68 (Heesob Park)
Status: Assigned
Priority: Normal
Assignee: h.shirosaki (Hiroshi Shirosaki)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100]


What is the correct result of File.stat("c:/...") on Windows?

File#stat for path like "c:/..." succeeds on trunk 36676.

C:\>ruby -ve 'p File.stat("c:/...")'
ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100]
#<File::Stat dev=0x2, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x2, size=
0, blksize=nil, blocks=nil, atime=2012-08-10 14:53:27 +0900, mtime=2012-08-10 09
:40:33 +0900, ctime=2011-04-08 19:43:44 +0900>

C:\>ruby -ve 'p File.stat("c:/....")'
ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100]
#<File::Stat dev=0x2, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x2, size=
0, blksize=nil, blocks=nil, atime=2012-08-10 14:53:32 +0900, mtime=2012-08-10 09
:40:33 +0900, ctime=2011-04-08 19:43:44 +0900>

C:\>ruby -ve 'p File.stat("c:/..../..")'
ruby 2.0.0dev (2012-08-10 trunk 36676) [i386-mswin32_100]
#<File::Stat dev=0x2, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x2, size=
0, blksize=nil, blocks=nil, atime=2012-08-10 14:53:45 +0900, mtime=2012-08-10 09
:40:33 +0900, ctime=2011-04-08 19:43:44 +0900>

But, File#stat raises exception on Ruby 1.9.3.

C:\Ruby193\bin>ruby -ve 'p File.stat("c:/...")
ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32]
-e:1:in `stat': Invalid argument - c:/... (Errno::EINVAL)
        from -e:1:in `<main>'

C:\Ruby193\bin>ruby -ve 'p File.stat("c:/....")
ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32]
-e:1:in `stat': No such file or directory - c:/.... (Errno::ENOENT)
        from -e:1:in `<main>'



-- 
http://bugs.ruby-lang.org/

In This Thread