diff options
author | Niels Weber <niels.weber@digia.com> | 2013-06-17 12:09:02 +0200 |
---|---|---|
committer | Niels Weber <niels.weber@digia.com> | 2013-06-17 13:24:11 +0200 |
commit | 44ff53c7ade1be12f070d718b284372d9910b6b8 (patch) | |
tree | 594f6350701053f94d76bd410662f8f07fbd6a1a /src/libs/kdtools | |
parent | 6a3d450f46ecbd4eaf353f82022f880e98c9aa48 (diff) |
Fix AppendFile Operation.
Task-number: QTIFW-284
Change-Id: I60079ebe9d13d17ed5ae38b545cceba4f35c7179
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Diffstat (limited to 'src/libs/kdtools')
-rw-r--r-- | src/libs/kdtools/kdupdaterupdateoperations.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
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; |