Add wasOpened flag for windows, so not attempt close when unopened
This commit is contained in:
parent
b6b2750327
commit
d23c697044
1 changed files with 4 additions and 1 deletions
|
|
@ -34,6 +34,7 @@ type
|
||||||
when defined(windows):
|
when defined(windows):
|
||||||
fHandle: int
|
fHandle: int
|
||||||
mapHandle: int
|
mapHandle: int
|
||||||
|
wasOpened: bool
|
||||||
else:
|
else:
|
||||||
handle: cint
|
handle: cint
|
||||||
|
|
||||||
|
|
@ -172,6 +173,8 @@ proc open*(filename: string, mode: FileMode = fmRead,
|
||||||
if mappedSize != -1: result.size = min(fileSize, mappedSize).int
|
if mappedSize != -1: result.size = min(fileSize, mappedSize).int
|
||||||
else: result.size = fileSize.int
|
else: result.size = fileSize.int
|
||||||
|
|
||||||
|
result.wasOpened = true
|
||||||
|
|
||||||
else:
|
else:
|
||||||
template fail(errCode: OSErrorCode, msg: expr) =
|
template fail(errCode: OSErrorCode, msg: expr) =
|
||||||
rollback()
|
rollback()
|
||||||
|
|
@ -226,7 +229,7 @@ proc close*(f: var MemFile) =
|
||||||
var lastErr: OSErrorCode
|
var lastErr: OSErrorCode
|
||||||
|
|
||||||
when defined(windows):
|
when defined(windows):
|
||||||
if f.fHandle != INVALID_HANDLE_VALUE:
|
if f.fHandle != INVALID_HANDLE_VALUE and wasOpened:
|
||||||
error = unmapViewOfFile(f.mem) == 0
|
error = unmapViewOfFile(f.mem) == 0
|
||||||
lastErr = osLastError()
|
lastErr = osLastError()
|
||||||
error = (closeHandle(f.mapHandle) == 0) or error
|
error = (closeHandle(f.mapHandle) == 0) or error
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue