summaryrefslogtreecommitdiffstats
path: root/src/libs/kdtools
diff options
context:
space:
mode:
authorNiels Weber <niels.weber@digia.com>2013-06-17 12:09:02 +0200
committerNiels Weber <niels.weber@digia.com>2013-06-17 13:24:11 +0200
commit44ff53c7ade1be12f070d718b284372d9910b6b8 (patch)
tree594f6350701053f94d76bd410662f8f07fbd6a1a /src/libs/kdtools
parent6a3d450f46ecbd4eaf353f82022f880e98c9aa48 (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.cpp16
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;