From f1d0c37565d771e1cbf051e5f2225fc24cdd0d00 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 10 Aug 2012 15:56:17 +0200 Subject: [PATCH] properly sync file's data on commit this ensures that creator doesn't eat my config files on every crash. Change-Id: I18f8135158e17d064774a49fe170b63c89517e49 Reviewed-by: Joerg Bornemann --- src/libs/utils/savefile.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libs/utils/savefile.cpp b/src/libs/utils/savefile.cpp index 57750f252cb..ebd310d6794 100644 --- a/src/libs/utils/savefile.cpp +++ b/src/libs/utils/savefile.cpp @@ -31,6 +31,11 @@ #include "savefile.h" #include "qtcassert.h" #include "fileutils.h" +#ifdef Q_OS_WIN +# include +#else +# include +#endif namespace Utils { @@ -78,6 +83,15 @@ bool SaveFile::commit() QTC_ASSERT(!m_finalized, return false); m_finalized = true; + if (!flush()) { + remove(); + return false; + } +#ifdef Q_OS_WIN + FlushFileBuffers(handle()); +#else + fdatasync(handle()); +#endif close(); if (error() != NoError) { remove();