]> sourceware.org Git - newlib-cygwin.git/commitdiff
* fhandler_disk_file.cc (fhandler_disk_file::lock): Use UINT32_MAX
authorCorinna Vinschen <corinna@vinschen.de>
Wed, 3 Dec 2003 11:22:49 +0000 (11:22 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Wed, 3 Dec 2003 11:22:49 +0000 (11:22 +0000)
instead of 0xffffffff.  Accomodate Win 9x bug in evaluating length
of area to lock when given length is 0.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler_disk_file.cc

index 8f96fbaaa30ca7d82e20b9013464887beaea6f82..3f329ed79112a3b9f13f1edb70e9fb136a090d00 100644 (file)
@@ -1,3 +1,9 @@
+2003-12-03  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::lock): Use UINT32_MAX
+       instead of 0xffffffff.  Accomodate Win 9x bug in evaluating length
+       of area to lock when given length is 0.
+
 2003-12-03  Pierre Humblet <pierre.humblet@ieee.org>
 
        * fhandler_disk_file.cc (fhandler_disk_file::lock): Interchange
index 2c8829ca4844749bf55818bfa896568dcf407e9a..d2adac66d1e414b7d7c45c47d126b1cea089e890 100644 (file)
@@ -536,18 +536,21 @@ fhandler_disk_file::lock (int cmd, struct __flock64 *fl)
 
   DWORD off_high, off_low, len_high, len_low;
 
-  off_low = (DWORD)(win32_start & 0xffffffff);
+  off_low = (DWORD)(win32_start & UINT32_MAX);
   off_high = (DWORD)(win32_start >> 32);
   if (win32_len == 0)
     {
       /* Special case if len == 0 for POSIX means lock to the end of
          the entire file (and all future extensions).  */
-      len_low = 0xffffffff;
+      /* CV, 2003-12-03: And yet another Win 9x bugginess.  For some reason
+        offset + length must be <= 0x100000000.  I'm using 0xffffffff as
+        upper border here, this should be sufficient. */
+      len_low = UINT32_MAX - (wincap.lock_file_highword () ? 0 : off_low);
       len_high = wincap.lock_file_highword ();
     }
   else
     {
-      len_low = (DWORD)(win32_len & 0xffffffff);
+      len_low = (DWORD)(win32_len & UINT32_MAX);
       len_high = (DWORD)(win32_len >> 32);
     }
 
This page took 0.092077 seconds and 5 git commands to generate.