Commit 36a85b4c authored by Brad King's avatar Brad King Committed by Kitware Robot
Browse files

Merge topic 'write-cache-atomically'

9eb8e4b2 Write CMakeCache.txt atomically (#13040)
parents bfc8d137 9eb8e4b2
......@@ -13,6 +13,7 @@
#include "cmCacheManager.h"
#include "cmSystemTools.h"
#include "cmCacheManager.h"
#include "cmGeneratedFileStream.h"
#include "cmMakefile.h"
#include "cmake.h"
#include "cmVersion.h"
......@@ -431,9 +432,8 @@ bool cmCacheManager::SaveCache(const char* path)
{
std::string cacheFile = path;
cacheFile += "/CMakeCache.txt";
std::string tempFile = cacheFile;
tempFile += ".tmp";
std::ofstream fout(tempFile.c_str());
cmGeneratedFileStream fout(cacheFile.c_str());
fout.SetCopyIfDifferent(true);
if(!fout)
{
cmSystemTools::Error("Unable to open cache file for save. ",
......@@ -561,10 +561,7 @@ bool cmCacheManager::SaveCache(const char* path)
}
}
fout << "\n";
fout.close();
cmSystemTools::CopyFileIfDifferent(tempFile.c_str(),
cacheFile.c_str());
cmSystemTools::RemoveFile(tempFile.c_str());
fout.Close();
std::string checkCacheFile = path;
checkCacheFile += cmake::GetCMakeFilesDirectory();
cmSystemTools::MakeDirectory(checkCacheFile.c_str());
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment