From 10c888b85502e115b7268865a26658f44a285f12 Mon Sep 17 00:00:00 2001 From: Jacob Barthelmeh Date: Tue, 11 Dec 2018 16:33:10 -0700 Subject: [PATCH] fix return check on ReadFile and WriteFile --- src/port.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/port.c b/src/port.c index b015066..e6176a5 100644 --- a/src/port.c +++ b/src/port.c @@ -90,7 +90,7 @@ int wPwrite(WFD fd, unsigned char* buf, unsigned int sz, long ofst) WMEMSET(&offset, 0, sizeof(OVERLAPPED)); offset.Offset = (DWORD)(ofst & 0xFFFFFFFF); offset.OffsetHigh = (DWORD)((ofst & 0xFFFFFFFF00000000) >> 32); - if (WriteFile((HANDLE)_get_osfhandle(fd), buf, sz, &bytesWritten, &offset) != 0) + if (WriteFile((HANDLE)_get_osfhandle(fd), buf, sz, &bytesWritten, &offset) <= 0) ret = -1; else ret = (int)bytesWritten; @@ -108,8 +108,14 @@ int wPread(WFD fd, unsigned char* buf, unsigned int sz, long ofst) WMEMSET(&offset, 0, sizeof(OVERLAPPED)); offset.Offset = (DWORD)(ofst & 0xFFFFFFFF); offset.OffsetHigh = (DWORD)((ofst & 0xFFFFFFFF00000000) >> 32); - if (ReadFile((HANDLE)_get_osfhandle(fd), buf, sz, &bytesRead, &offset) != 0) - ret = -1; + if (ReadFile((HANDLE)_get_osfhandle(fd), buf, sz, &bytesRead, &offset) <= 0) { + if (GetLastError() == ERROR_HANDLE_EOF) { + ret = 0; /* return 0 for end of file */ + } + else { + ret = -1; + } + } else ret = (int)bytesRead;