QFile::copy: remove the fallback to copying through QDir::tempPath()

This would never work: if we failed to create the temporary file in the
target directory, then a later QTemporaryFile::rename() to that name is
even less likely to work. If we didn't have write permissions, we're not
likely to get them; if the disk was so full that we couldn't create a
file, the copying of the data is going to fail too; if the FS is out of
inodes, it wouldn't be able to create the file anywhere either. The only
case where the creation elsewhere would work is if it were a different
FS, but then QTemporaryFile::rename() won't succeed.

Change-Id: I1ba6b9f7050f81163d14fffd79ff4e7460201e86
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
This commit is contained in:
Thiago Macieira 2025-01-23 18:39:55 -08:00
parent d169447627
commit fb5b9fd6f3

View File

@ -824,11 +824,8 @@ QFile::copy(const QString &newName)
error = true;
#else
QTemporaryFile out(fileTemplate.arg(QFileInfo(newName).path()));
if (!out.open()) {
out.setFileTemplate(fileTemplate.arg(QDir::tempPath()));
if (!out.open())
error = true;
}
if (!out.open())
error = true;
#endif
if (error) {
d->setError(QFile::CopyError, tr("Cannot open for output: %1").arg(out.errorString()));