Jacek Caban (@jacek) commented about dlls/wininet/http.c:
req->read_pos += read; }
+ if(read < size && req->hCacheFile) { + DWORD cache_pos, err; + while(read < size) { + cache_pos = SetFilePointer(req->hCacheFile, 0, NULL, FILE_CURRENT); + err = cache_pos == INVALID_SET_FILE_POINTER ? GetLastError() : NO_ERROR; + if(err != NO_ERROR) + ERR("SetFilePointer failed with error %ld\n", err); + if(cache_pos <= GetFileSize(req->hCacheFile, NULL)) + break;
Instead of checking those manually, you could just handle it by interpreting `ReadFile` result. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/1268#note_13738