summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorxiechyong <chengy.xie@gmail.com>2011-10-27 21:07:26 -0700
committerQt by Nokia <qt-info@nokia.com>2011-11-18 20:25:53 +0100
commit6329cb8856758cd5bb4c9b5cbabddccb8316a893 (patch)
tree41977fd473d66b1f86b19f48c22cde307388e247 /src
parentd2cdfc950ecd4a872b6290e81bdb230b052218d1 (diff)
Fix QFile::copy() returning false but error() being NoError
Calling close() after setError() will unset the error. Task-number: QTBUG-11982 Merge-request: 2712 Reviewed-by: ossi (cherry picked from commit 16f67b49ae5232d4d0fb19e0333f5e2ef2a65449) Change-Id: I16f67b49ae5232d4d0fb19e0333f5e2ef2a65449 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/io/qfile.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index 684f360313..d5118525cf 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -909,6 +909,7 @@ QFile::copy(const QString &newName)
#endif
if (error) {
out.close();
+ close();
d->setError(QFile::CopyError, tr("Cannot open for output"));
} else {
char block[4096];
@@ -919,6 +920,7 @@ QFile::copy(const QString &newName)
break;
totalRead += in;
if(in != out.write(block, in)) {
+ close();
d->setError(QFile::CopyError, tr("Failure to write block"));
error = true;
break;
@@ -932,6 +934,7 @@ QFile::copy(const QString &newName)
}
if (!error && !out.rename(newName)) {
error = true;
+ close();
d->setError(QFile::CopyError, tr("Cannot create %1 for output").arg(newName));
}
#ifdef QT_NO_TEMPORARYFILE
@@ -942,10 +945,10 @@ QFile::copy(const QString &newName)
out.setAutoRemove(false);
#endif
}
- close();
}
if(!error) {
QFile::setPermissions(newName, permissions());
+ close();
unsetError();
return true;
}