This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] pread() returns non-zero if read beyond EOF, because NtReadFile returns EOF status but doesn't set information to 0. Need reset io status block before NtReadFile is called, so that pread() will return 0 if read beyond EOF.


On Nov  7 17:33, Xiaofeng Liu via cygwin-patches wrote:
> --- winsup/cygwin/fhandler_disk_file.cc |    1 + 1 files changed, 1 insertions(+), 0 deletions(-)
> diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.ccindex bc8fead..525cb32 100644--- a/winsup/cygwin/fhandler_disk_file.cc+++ b/winsup/cygwin/fhandler_disk_file.cc@@ -1525,6 +1525,7 @@ fhandler_disk_file::pread (void *buf, size_t count, off_t offset)       IO_STATUS_BLOCK io;       LARGE_INTEGER off = { QuadPart:offset }; +      memset(&io, 0, sizeof(io));       if (!prw_handle && prw_open (false))        goto non_atomic;       status = NtReadFile (prw_handle, NULL, NULL, NULL, &io, buf, count,-- 1.7.1

This is still completely broken, unfortunately.  I took a look, though,
and fixed this problem slightly differently.  Please have a look at
https://sourceware.org/git/?p=newlib-cygwin.git;a=commitdiff;h=46702f92ea49
I retained your authorship, of course.


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: signature.asc
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]