Просмотр исходного кода

Remove temporary file at safeWriteToFile()

selat 10 лет назад
Родитель
Сommit
5f1f1151d3
1 измененных файлов с 9 добавлено и 6 удалено
  1. 9 6
      src/filesys.cpp

+ 9 - 6
src/filesys.cpp

@@ -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