From 9b729ff750ac2b002c1e391ef441163bec7b4295 Mon Sep 17 00:00:00 2001 From: David Lichteblau Date: Wed, 10 Aug 2011 16:50:29 +0200 Subject: [PATCH] sb-simple-streams: Close files before deleting them on revert Thanks to Anton Kovalenko. --- contrib/sb-simple-streams/file.lisp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/contrib/sb-simple-streams/file.lisp b/contrib/sb-simple-streams/file.lisp index e668269..48d48ad 100644 --- a/contrib/sb-simple-streams/file.lisp +++ b/contrib/sb-simple-streams/file.lisp @@ -152,15 +152,18 @@ (defmethod device-close ((stream file-simple-stream) abort) (with-stream-class (file-simple-stream stream) - (let ((fd (or (sm input-handle stream) (sm output-handle stream)))) + (let ((fd (or (sm input-handle stream) (sm output-handle stream))) + (closed nil)) (when (sb-int:fixnump fd) (cond (abort (when (any-stream-instance-flags stream :output) + #+win32 (progn (sb-unix:unix-close fd) (setf closed t)) (revert-file (sm filename stream) (sm original stream)))) (t (when (sm delete-original stream) (delete-original (sm filename stream) (sm original stream))))) - (sb-unix:unix-close fd)) + (unless closed + (sb-unix:unix-close fd))) (when (sm buffer stream) (free-buffer (sm buffer stream)) (setf (sm buffer stream) nil)))) -- 1.7.10.4