From 44ff53c7ade1be12f070d718b284372d9910b6b8 Mon Sep 17 00:00:00 2001 From: Niels Weber Date: Mon, 17 Jun 2013 12:09:02 +0200 Subject: Fix AppendFile Operation. Task-number: QTIFW-284 Change-Id: I60079ebe9d13d17ed5ae38b545cceba4f35c7179 Reviewed-by: Karsten Heimrich --- src/libs/kdtools/kdupdaterupdateoperations.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/libs/kdtools/kdupdaterupdateoperations.cpp b/src/libs/kdtools/kdupdaterupdateoperations.cpp index e3e984374..f9d8cd3b9 100644 --- a/src/libs/kdtools/kdupdaterupdateoperations.cpp +++ b/src/libs/kdtools/kdupdaterupdateoperations.cpp @@ -592,9 +592,23 @@ bool AppendFileOperation::performOperation() QFile file(fName); if (!file.open(QFile::Append)) { // first we rename the file, then we copy it to the real target and open the copy - the renamed original is then marked for deletion + bool error = false; const QString newName = backupFileName(fName); - if (!QFile::rename(fName, newName) && QFile::copy(newName, fName) && file.open(QFile::Append)) { + + if (!QFile::rename(fName, newName)) + error = true; + + if (!error && !QFile::copy(newName, fName)) { + error = true; QFile::rename(newName, fName); + } + + if (!error && !file.open(QFile::Append)) { + error = true; + deleteFileNowOrLater(newName); + } + + if (error) { setError(UserDefinedError); setErrorString(tr("Could not open file '%1' for writing: %2").arg(file.fileName(), file.errorString())); return false; -- cgit v1.2.3