}
}
#elif defined(_WIN32)
+ HANDLE hMapping = nullptr;
+
impl(struct llama_file * file, size_t prefetch, bool numa) {
GGML_UNUSED(numa);
HANDLE hFile = (HANDLE) _get_osfhandle(file->file_id());
- HANDLE hMapping = CreateFileMappingA(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
+ hMapping = CreateFileMappingA(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
if (hMapping == NULL) {
DWORD error = GetLastError();
addr = MapViewOfFile(hMapping, FILE_MAP_READ, 0, 0, 0);
DWORD error = GetLastError();
- CloseHandle(hMapping);
if (addr == NULL) {
+ CloseHandle(hMapping);
throw std::runtime_error(format("MapViewOfFile failed: %s", llama_format_win_err(error).c_str()));
}
}
~impl() {
- if (!UnmapViewOfFile(addr)) {
- LLAMA_LOG_WARN("warning: UnmapViewOfFile failed: %s\n",
- llama_format_win_err(GetLastError()).c_str());
+ if (hMapping) {
+ if (addr) {
+ if (!UnmapViewOfFile(addr)) {
+ LLAMA_LOG_WARN("warning: UnmapViewOfFile failed: %s\n",
+ llama_format_win_err(GetLastError()).c_str());
+ }
+ }
+ if (!CloseHandle(hMapping)) {
+ LLAMA_LOG_WARN("warning: CloseHandle failed: %s\n",
+ llama_format_win_err(GetLastError()).c_str());
+ }
}
}
#else