mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-30 15:11:16 +02:00
Handle ReadFile() EOF correctly on Windows.
When ReadFile() encounters the end of a file while reading from a synchronous handle with an offset provided via OVERLAPPED, it reports an error instead of returning 0. By not handling that (undocumented) result correctly, we caused some noisy LOG messages about an unknown error code. Repair. Back-patch to 12, where we started using pread()/ReadFile() with an offset. Reported-by: ZhenHua Cai, Amit Kapila Diagnosed-by: Juan Jose Santamaria Flecha Tested-by: Amit Kapila Discussion: https://postgr.es/m/CAA4eK1LK3%2BWRtpz68TiRdpHwxxWm%3D%2Bt1BMf-G68hhQsAQ41PZg%40mail.gmail.com
This commit is contained in:
parent
80e05a088e
commit
6969deeb8d
@ -41,6 +41,9 @@ pg_pread(int fd, void *buf, size_t size, off_t offset)
|
||||
overlapped.Offset = offset;
|
||||
if (!ReadFile(handle, buf, size, &result, &overlapped))
|
||||
{
|
||||
if (GetLastError() == ERROR_HANDLE_EOF)
|
||||
return 0;
|
||||
|
||||
_dosmaperr(GetLastError());
|
||||
return -1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user