On Thursday 04 December 2025 14:42:38 LIU Hao wrote:
> 在 2025-11-25 01:48, Pali Rohár 写道:
> > Use the correct structure for passing 64-bit offset: LARGE_INTEGER.
> > ---
> > mingw-w64-crt/testcases/t_fseeko64.c | 7 ++-----
> > 1 file changed, 2 insertions(+), 5 deletions(-)
> >
> > diff --git a/mingw-w64-crt/testcases/t_fseeko64.c
> > b/mingw-w64-crt/testcases/t_fseeko64.c
> > index d33cb12e37e4..28801def2c35 100644
> > --- a/mingw-w64-crt/testcases/t_fseeko64.c
> > +++ b/mingw-w64-crt/testcases/t_fseeko64.c
> > @@ -8,14 +8,11 @@ static const char *writebuf = "TESTVECTORSTRING";
> > static char szPath[MAX_PATH];
> > static int writefile(const char *path){
> > - OVERLAPPED ov;
> > + LARGE_INTEGER li = { .QuadPart = 0x10000 };
> > DWORD dwResult;
> > - memset(&ov,0,sizeof(OVERLAPPED));
> > - ov.Offset = 0x0;
> > - ov.OffsetHigh = 0x1;
> > HANDLE fd = CreateFileA(path,GENERIC_READ | GENERIC_WRITE, 0, NULL,
> > CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
> > if (fd == INVALID_HANDLE_VALUE) return 1;
> > - if (SetFilePointer(fd, ov.Offset, &ov.OffsetHigh, FILE_BEGIN) ==
> > INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) {
> > + if (SetFilePointer(fd, li.LowPart, &li.HighPart, FILE_BEGIN) ==
> > INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) {
> > printf("writefile: seek failed: winerror=%lu\n", GetLastError());
> > CloseHandle(fd);
> > return 1;
>
> This changes the file pointer and causes `fread()` later to fail. I think
> you meant `.QuadPart = 0x100000000`?
Ah, I forgot to squash fixup commit in my local git.
Sure without that, the test is failing.
> If the file pointer is represented as a `LARGE_INTEGER`, it's probably better
> to call `SetFilePointerEx()`.
I let the call as is. Just wanted to fix the compile warning.
And probably the Ex variant requires some minimal Windows version.
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public