Remove temporary file at safeWriteToFile()
authorselat <longexampletestname@gmail.com>
Sun, 13 Jul 2014 20:35:29 +0000 (23:35 +0300)
committersapier <Sapier at GMX dot net>
Sat, 16 Aug 2014 10:46:48 +0000 (12:46 +0200)
src/filesys.cpp

index 7c72a4b2757f9f6d7601af372ecc82a77fff6b99..b95986a92bcc9f880a412d1703441ea8549d85b8 100644 (file)
@@ -701,16 +701,19 @@ bool safeWriteToFile(const std::string &path, const std::string &content)
        os << content;
        os.flush();
        os.close();
-       if (os.fail())
+       if (os.fail()) {
+               remove(tmp_file.c_str());
                return false;
+       }
 
        // Copy file
-#ifdef _WIN32
        remove(path.c_str());
-       return (rename(tmp_file.c_str(), path.c_str()) == 0);
-#else
-       return (rename(tmp_file.c_str(), path.c_str()) == 0);
-#endif
+       if(rename(tmp_file.c_str(), path.c_str())) {
+               remove(tmp_file.c_str());
+               return false;
+       } else {
+               return true;
+       }
 }
 
 } // namespace fs