1
0
This commit is contained in:
Scott E. Graves
2017-04-05 12:54:22 -05:00
parent c5efa58b0d
commit 871d22cb69

View File

@@ -635,12 +635,13 @@ private:
NTSTATUS ret = STATUS_SUCCESS; NTSTATUS ret = STATUS_SUCCESS;
auto siaFileTree = GetFileTree(); auto siaFileTree = GetFileTree();
auto siaFile = siaFileTree ? siaFileTree->GetFile(openFileInfo->SiaPath) : nullptr; auto siaFile = siaFileTree && openFileInfo ? siaFileTree->GetFile(openFileInfo->SiaPath) : nullptr;
SString cachFileLocation = openFileInfo ? openFileInfo->CacheFilePath : FilePath(GetCacheLocation(), fileName);
HANDLE tempHandle = openFileInfo->FileHandle; HANDLE tempHandle = openFileInfo ? openFileInfo->FileHandle : nullptr;
if (!siaFile && (!tempHandle || (tempHandle == INVALID_HANDLE_VALUE))) if (!siaFile && (!tempHandle || (tempHandle == INVALID_HANDLE_VALUE)))
{ {
tempHandle = ::CreateFile(&openFileInfo->CacheFilePath[0], GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr); tempHandle = ::CreateFile(&cachFileLocation[0], GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
if (tempHandle == INVALID_HANDLE_VALUE) if (tempHandle == INVALID_HANDLE_VALUE)
{ {
ret = DokanNtStatusFromWin32(::GetLastError()); ret = DokanNtStatusFromWin32(::GetLastError());
@@ -653,7 +654,7 @@ private:
if (ret == STATUS_SUCCESS) if (ret == STATUS_SUCCESS)
{ {
if (openFileInfo->Dummy) if (openFileInfo && openFileInfo->Dummy)
{ {
LARGE_INTEGER li = { 0 }; LARGE_INTEGER li = { 0 };
li.QuadPart = siaFile->GetFileSize(); li.QuadPart = siaFile->GetFileSize();
@@ -668,12 +669,12 @@ private:
// in this case, FindFirstFile can't get directory information // in this case, FindFirstFile can't get directory information
if (wcscmp(fileName, L"\\") == 0) if (wcscmp(fileName, L"\\") == 0)
{ {
handleFileInfo->dwFileAttributes = ::GetFileAttributes(&openFileInfo->CacheFilePath[0]); handleFileInfo->dwFileAttributes = ::GetFileAttributes(&cachFileLocation[0]);
} }
else else
{ {
WIN32_FIND_DATA find = { 0 }; WIN32_FIND_DATA find = { 0 };
HANDLE findHandle = ::FindFirstFile(&openFileInfo->CacheFilePath[0], &find); HANDLE findHandle = ::FindFirstFile(&cachFileLocation[0], &find);
if (findHandle == INVALID_HANDLE_VALUE) if (findHandle == INVALID_HANDLE_VALUE)
{ {
DWORD error = ::GetLastError(); DWORD error = ::GetLastError();