memfiles: better error checking for Windows; refs #6361

This commit is contained in:
Araq
2018-01-03 13:24:20 +01:00
parent 49a00fe6ff
commit e593fef320

View File

@@ -257,10 +257,13 @@ proc close*(f: var MemFile) =
when defined(windows):
if f.wasOpened:
error = unmapViewOfFile(f.mem) == 0
lastErr = osLastError()
error = (closeHandle(f.mapHandle) == 0) or error
if f.fHandle != INVALID_HANDLE_VALUE:
error = (closeHandle(f.fHandle) == 0) or error
if not error:
error = closeHandle(f.mapHandle) == 0
if not error and f.fHandle != INVALID_HANDLE_VALUE:
discard closeHandle(f.fHandle)
f.fHandle = INVALID_HANDLE_VALUE
if error:
lastErr = osLastError()
else:
error = munmap(f.mem, f.size) != 0
lastErr = osLastError()