memfiles: better error checking for Windows; refs #6361

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

View file

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