From: David Lichteblau Date: Wed, 10 Aug 2011 14:50:29 +0000 (+0200) Subject: sb-simple-streams: Close files before deleting them on revert X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=9b729ff750ac2b002c1e391ef441163bec7b4295;hp=f179b4c117ffc1886cf106c053b248ad3f88a968;p=sbcl.git sb-simple-streams: Close files before deleting them on revert Thanks to Anton Kovalenko. --- 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))))