]> sourceware.org Git - newlib-cygwin.git/commitdiff
* fhandler.cc (fhandler_base::lseek): Avoid calling SetFilePointer with high
authorChristopher Faylor <me@cgf.cx>
Fri, 17 May 2002 19:30:52 +0000 (19:30 +0000)
committerChristopher Faylor <me@cgf.cx>
Fri, 17 May 2002 19:30:52 +0000 (19:30 +0000)
order part of 64 bit address on OS's which do not support that kind of
operation.  Otherwise Windows 95 will become confused.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler.cc

index 3e57d1c71561a9f9112a67969334f47846dc8f09..deac45f448a2743282169d195fdee6d31ac54e8a 100644 (file)
@@ -1,3 +1,9 @@
+2002-05-17  Christopher Faylor  <cgf@redhat.com>
+
+       * fhandler.cc (fhandler_base::lseek): Avoid calling SetFilePointer with
+       high order part of 64 bit address on OS's which do not support that
+       kind of operation.  Otherwise Windows 95 will become confused.
+
 2002-05-16  Pierre Humblet <pierre.humblet@ieee.org>
 
        * fhandler_raw.cc (fhandler_dev_raw::open): Replace set_errno()
index dd7aeb2e76464b29d6b2d28182f186f0a7b39c04..d1b0a4afc928e0cf53741763b610872e0175d102 100644 (file)
@@ -732,9 +732,17 @@ fhandler_base::lseek (__off64_t offset, int whence)
                       : (whence == SEEK_CUR ? FILE_CURRENT : FILE_END);
 
   LONG off_low = offset & 0xffffffff;
-  LONG off_high = wincap.has_64bit_file_access () ? offset >> 32 : 0;
+  LONG *poff_high, off_high;
+  if (!wincap.has_64bit_file_access ())
+    poff_high = NULL;
+  else
+    {
+      off_high =  offset >> 32;
+      poff_high = &off_high;
+    }
 
-  res = SetFilePointer (get_handle(), off_low, &off_high, win32_whence);
+  debug_printf ("setting file pointer to %u (high), %u (low)", off_high, off_low);
+  res = SetFilePointer (get_handle(), off_low, poff_high, win32_whence);
   if (res == INVALID_SET_FILE_POINTER && GetLastError ())
     {
       __seterrno ();
This page took 0.030956 seconds and 5 git commands to generate.