OSDN Git Service

* syscalls.cc (statfs): Call GetDiskFreeSpaceEx before GetDiskFreeSpace.
authorcorinna <corinna>
Mon, 26 May 2003 16:52:58 +0000 (16:52 +0000)
committercorinna <corinna>
Mon, 26 May 2003 16:52:58 +0000 (16:52 +0000)
winsup/cygwin/ChangeLog
winsup/cygwin/syscalls.cc

index b61ba69..76f1fc3 100644 (file)
@@ -1,3 +1,7 @@
+2003-05-26  Pierre Humblet  <pierre.humblet@ieee.org>
+
+       * syscalls.cc (statfs): Call GetDiskFreeSpaceEx before GetDiskFreeSpace.
+
 2003-05-26  Corinna Vinschen  <corinna@vinschen.de>
 
        * fhandler.cc (is_at_eof): Fix conditional.  Use INVALID_FILE_SIZE
index 3c3be86..8922f94 100644 (file)
@@ -1876,6 +1876,11 @@ statfs (const char *fname, struct statfs *sfs)
 
   syscall_printf ("statfs %s", root);
 
+  /* GetDiskFreeSpaceEx must be called before GetDiskFreeSpace on
+     WinME, to avoid the MS KB 314417 bug */
+  ULARGE_INTEGER availb, freeb, totalb;
+  BOOL status = GetDiskFreeSpaceEx (root, &availb, &totalb, &freeb);
+
   DWORD spc, bps, availc, freec, totalc;
 
   if (!GetDiskFreeSpace (root, &spc, &bps, &freec, &totalc))
@@ -1884,9 +1889,7 @@ statfs (const char *fname, struct statfs *sfs)
       return -1;
     }
 
-  ULARGE_INTEGER availb, freeb, totalb;
-
-  if (GetDiskFreeSpaceEx (root, &availb, &totalb, &freeb))
+  if (status)
     {
       availc = availb.QuadPart / (spc*bps);
       totalc = totalb.QuadPart / (spc*bps);