diff options
author | Araq <rumpf_a@web.de> | 2018-01-03 13:24:20 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2018-01-03 13:24:20 +0100 |
commit | e593fef3206c359344c93bf7a3716da644f1906f (patch) | |
tree | 8893c213f12f32c74f173f5166aa9772fb55c763 | |
parent | 49a00fe6ffa06a5aaa09915fbf918cc089ca2a67 (diff) | |
download | Nim-e593fef3206c359344c93bf7a3716da644f1906f.tar.gz |
memfiles: better error checking for Windows; refs #6361
-rw-r--r-- | lib/pure/memfiles.nim | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/pure/memfiles.nim b/lib/pure/memfiles.nim index 9b2d25267..5c73381ff 100644 --- a/lib/pure/memfiles.nim +++ b/lib/pure/memfiles.nim @@ -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() |