summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@googlemail.com>2013-04-07 13:40:01 +0100
committerDominik Picheta <dominikpicheta@googlemail.com>2013-04-07 13:40:01 +0100
commitd26e4883165cef1e6171094590021c0a674eccbf (patch)
treef4bded42cf23c4a5dda41d816f9b9c5595a6be18 /lib/pure
parentf9d4e39a12238d48cd7b8ab461055fe48b989967 (diff)
downloadNim-d26e4883165cef1e6171094590021c0a674eccbf.tar.gz
A file stream now makes sure to only close its file descriptor once.
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/streams.nim5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/pure/streams.nim b/lib/pure/streams.nim
index 581db3163..4a196127c 100644
--- a/lib/pure/streams.nim
+++ b/lib/pure/streams.nim
@@ -238,7 +238,10 @@ type
   TFileStream* = object of TStream
     f: TFile
 
-proc fsClose(s: PStream) = close(PFileStream(s).f)
+proc fsClose(s: PStream) =
+  if PFileStream(s).f != nil:
+    close(PFileStream(s).f)
+    PFileStream(s).f = nil
 proc fsFlush(s: PStream) = flushFile(PFileStream(s).f)
 proc fsAtEnd(s: PStream): bool = return EndOfFile(PFileStream(s).f)
 proc fsSetPosition(s: PStream, pos: int) = setFilePos(PFileStream(s).f, pos)