Skip to content

Commit eac2346

Browse files
committed
Addendum to e3a7998 (and with that, to 51d01e1)
1 parent 4ce785b commit eac2346

2 files changed

Lines changed: 17 additions & 4 deletions

File tree

Shared/sdk/CChecksum.h

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,23 @@ class CChecksum
7171

7272
SString buf;
7373
if (!SharedUtil::FileLoadWithTimeout(strFilename, buf, 10000))
74-
return SharedUtil::FileExists(strFilename) ? SString("Could not read: %s", strFilename.c_str())
75-
: SString("File not found: %s", strFilename.c_str());
74+
{
75+
if (!SharedUtil::FileExists(strFilename))
76+
return SString("File not found: %s", strFilename.c_str());
77+
78+
CChecksum r;
79+
errno = 0;
80+
r.ulCRC = CRCGenerator::GetCRCFromFile(strFilename);
81+
if (errno || !CMD5Hasher().Calculate(strFilename, r.md5))
82+
return SString("Could not read: %s", strFilename.c_str());
83+
84+
if (hasMeta && GetFileAttributesExW(wide.c_str(), GetFileExInfoStandard, &attr) &&
85+
sz == ((std::uint64_t(attr.nFileSizeHigh) << 32) | attr.nFileSizeLow) &&
86+
mt == ((std::uint64_t(attr.ftLastWriteTime.dwHighDateTime) << 32) | attr.ftLastWriteTime.dwLowDateTime)) {
87+
std::lock_guard<std::mutex> l(CacheMtx()); Cache()[key] = {sz, mt, r.ulCRC, r.md5};
88+
}
89+
return r;
90+
}
7691

7792
CChecksum r;
7893
r.ulCRC = CRCGenerator::GetCRCFromBuffer(buf.data(), buf.size());

Shared/sdk/SharedUtil.File.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,8 +1664,6 @@ bool SharedUtil::FileLoadWithTimeout(const SString& filePath, SString& outBuffer
16641664
DWORD fileSize = attr.nFileSizeLow;
16651665
if (fileSize == 0)
16661666
return true;
1667-
if (fileSize > 512 * 1024 * 1024)
1668-
return false;
16691667

16701668
HANDLE fh = CreateFileW(wideFilePath.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
16711669
nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, nullptr);

0 commit comments

Comments
 (0)