diff --git a/cautious-file.cabal b/cautious-file.cabal
--- a/cautious-file.cabal
+++ b/cautious-file.cabal
@@ -1,5 +1,5 @@
 name:                cautious-file
-version:             0.1.4
+version:             0.1.5
 Cabal-Version:	     >= 1.6
 synopsis:            Ways to write a file cautiously, to reduce the chances of problems such as data loss due to crashes or power failures
 description:         If the posix flag is enabled, posix-specific functions are used to reduce the chance of data loss further
diff --git a/src/System/IO/Cautious.hs b/src/System/IO/Cautious.hs
--- a/src/System/IO/Cautious.hs
+++ b/src/System/IO/Cautious.hs
@@ -18,6 +18,9 @@
 import System.FilePath (splitFileName)
 import System.IO (openTempFile)
 #ifdef _POSIX
+import Control.Exception (tryJust)
+import Control.Monad (guard)
+import System.IO.Error (isDoesNotExistError)
 import System.Posix.ByteLevel (writeAllL)
 import System.Posix.Files (fileMode, getFileStatus, setFdMode)
 import System.Posix.Fsync (fsync)
@@ -47,8 +50,7 @@
 #ifdef _POSIX
     fd <- handleToFd handle
     writeAllL fd bs
-    st <- getFileStatus cfp
-    setFdMode fd $ fileMode st
+    tryJust (\e -> guard (isDoesNotExistError e) >> return ()) $ setFdMode fd . fileMode =<< getFileStatus cfp
     fsync fd
     closeFd fd
 #else
