diff options
author | JamesP <jlp765@gmail.com> | 2015-09-22 16:16:51 +1000 |
---|---|---|
committer | JamesP <jlp765@gmail.com> | 2015-09-22 16:16:51 +1000 |
commit | d23c697044e3d8d8d899b4c0d1355aeff25015f1 (patch) | |
tree | ae80a9e5affcb657a89d18cb4419ac92f4d719f4 /lib/pure | |
parent | b6b2750327208477e84d4ebbdb289e8847ac2289 (diff) | |
download | Nim-d23c697044e3d8d8d899b4c0d1355aeff25015f1.tar.gz |
Add wasOpened flag for windows, so not attempt close when unopened
Diffstat (limited to 'lib/pure')
-rw-r--r-- | lib/pure/memfiles.nim | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/pure/memfiles.nim b/lib/pure/memfiles.nim index 27b989597..83d62b589 100644 --- a/lib/pure/memfiles.nim +++ b/lib/pure/memfiles.nim @@ -34,6 +34,7 @@ type when defined(windows): fHandle: int mapHandle: int + wasOpened: bool else: handle: cint @@ -172,6 +173,8 @@ proc open*(filename: string, mode: FileMode = fmRead, if mappedSize != -1: result.size = min(fileSize, mappedSize).int else: result.size = fileSize.int + result.wasOpened = true + else: template fail(errCode: OSErrorCode, msg: expr) = rollback() @@ -226,7 +229,7 @@ proc close*(f: var MemFile) = var lastErr: OSErrorCode when defined(windows): - if f.fHandle != INVALID_HANDLE_VALUE: + if f.fHandle != INVALID_HANDLE_VALUE and wasOpened: error = unmapViewOfFile(f.mem) == 0 lastErr = osLastError() error = (closeHandle(f.mapHandle) == 0) or error |