diff options
Diffstat (limited to 'src/engine/cache.cpp')
-rw-r--r-- | src/engine/cache.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/engine/cache.cpp b/src/engine/cache.cpp index fcc7f72d..59daf139 100644 --- a/src/engine/cache.cpp +++ b/src/engine/cache.cpp | |||
@@ -1119,7 +1119,7 @@ extern "C" void CacheCleanup( | |||
1119 | LPWSTR sczDelete = NULL; | 1119 | LPWSTR sczDelete = NULL; |
1120 | HANDLE hFind = INVALID_HANDLE_VALUE; | 1120 | HANDLE hFind = INVALID_HANDLE_VALUE; |
1121 | WIN32_FIND_DATAW wfd = { }; | 1121 | WIN32_FIND_DATAW wfd = { }; |
1122 | DWORD cFileName = 0; | 1122 | size_t cchFileName = 0; |
1123 | 1123 | ||
1124 | hr = CacheGetCompletedPath(fPerMachine, UNVERIFIED_CACHE_FOLDER_NAME, &sczFolder); | 1124 | hr = CacheGetCompletedPath(fPerMachine, UNVERIFIED_CACHE_FOLDER_NAME, &sczFolder); |
1125 | if (SUCCEEDED(hr)) | 1125 | if (SUCCEEDED(hr)) |
@@ -1146,17 +1146,15 @@ extern "C" void CacheCleanup( | |||
1146 | continue; | 1146 | continue; |
1147 | } | 1147 | } |
1148 | 1148 | ||
1149 | // For extra safety and to silence OACR. | ||
1150 | wfd.cFileName[MAX_PATH - 1] = L'\0'; | ||
1151 | |||
1152 | // Skip resume files (they end with ".R"). | 1149 | // Skip resume files (they end with ".R"). |
1153 | cFileName = lstrlenW(wfd.cFileName); | 1150 | hr = ::StringCchLengthW(wfd.cFileName, MAX_PATH, &cchFileName); |
1154 | if (2 < cFileName && L'.' == wfd.cFileName[cFileName - 2] && (L'R' == wfd.cFileName[cFileName - 1] || L'r' == wfd.cFileName[cFileName - 1])) | 1151 | if (FAILED(hr) || |
1152 | 2 < cchFileName && L'.' == wfd.cFileName[cchFileName - 2] && (L'R' == wfd.cFileName[cchFileName - 1] || L'r' == wfd.cFileName[cchFileName - 1])) | ||
1155 | { | 1153 | { |
1156 | continue; | 1154 | continue; |
1157 | } | 1155 | } |
1158 | 1156 | ||
1159 | hr = PathConcat(sczFolder, wfd.cFileName, &sczDelete); | 1157 | hr = PathConcatCch(sczFolder, 0, wfd.cFileName, cchFileName, &sczDelete); |
1160 | if (SUCCEEDED(hr)) | 1158 | if (SUCCEEDED(hr)) |
1161 | { | 1159 | { |
1162 | hr = FileEnsureDelete(sczDelete); | 1160 | hr = FileEnsureDelete(sczDelete); |